LU000W · theorem body

lucas_prime_shift_below_base

Alpha v34 checked-use · independently kernel and Lean verified; not Stable

Every below-base coefficient of row p+a is congruent modulo prime p to the corresponding coefficient of row a, by constructive Pascal induction.

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.

Statement with defined notation

∀ p. ∀ a. ∀ b. ∀ C. ∀ D. Prime(p)Lt(b,p)Choose(p + a,b,C)Choose(a,b,D)ModEq(p,C,D)

Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.

Definitions used by this theorem

In the theorem statement

In local proof propositions

Exact expanded first-order statement
forall p a b C D. ((~(p = 1) /\ forall frm_prime_left_lucas_convolution_prime frm_prime_right_lucas_convolution_prime. p = frm_prime_left_lucas_convolution_prime * frm_prime_right_lucas_convolution_prime -> frm_prime_left_lucas_convolution_prime = 1 \/ frm_prime_right_lucas_convolution_prime = 1)) -> (exists lcv_gap_shift_bound. lcv_gap_shift_bound + S (b) = (p)) -> (((exists bcf_lt_gap_lucas_convolution_shift_upper_out_of_range. bcf_lt_gap_lucas_convolution_shift_upper_out_of_range + S (p + a) = b) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_upper_in_range. bcf_le_gap_lucas_convolution_shift_upper_in_range + (b) = p + a) /\ (exists bcf_row_code_code_lucas_convolution_shift_upper bcf_row_code_scale_lucas_convolution_shift_upper bcf_row_scale_code_lucas_convolution_shift_upper bcf_row_scale_scale_lucas_convolution_shift_upper bcf_row_code_lucas_convolution_shift_upper bcf_row_scale_lucas_convolution_shift_upper. ((forall bcf_row_index_lucas_convolution_shift_upper_table. (exists bcf_lt_gap_lucas_convolution_shift_upper_table_row_bound. bcf_lt_gap_lucas_convolution_shift_upper_table_row_bound + S (bcf_row_index_lucas_convolution_shift_upper_table) = S (p + a)) -> exists bcf_row_code_lucas_convolution_shift_upper_table bcf_row_scale_lucas_convolution_shift_upper_table. ((((exists bcf_height_lucas_convolution_shift_upper_table_decoded_row_code. bcf_height_lucas_convolution_shift_upper_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_upper_table) = S ((S (bcf_row_index_lucas_convolution_shift_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_upper) + (bcf_row_code_lucas_convolution_shift_upper_table))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_table_decoded_row_scale. bcf_height_lucas_convolution_shift_upper_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_upper_table) = S ((S (bcf_row_index_lucas_convolution_shift_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper) + (bcf_row_scale_lucas_convolution_shift_upper_table))) /\ ((bcf_row_index_lucas_convolution_shift_upper_table = 0 /\ (forall bcf_index_lucas_convolution_shift_upper_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_upper_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_upper_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_upper_table_zero_row) = S (p + a)) -> exists bcf_value_lucas_convolution_shift_upper_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_upper_table_zero_row_entry. bcf_height_lucas_convolution_shift_upper_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_upper_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_upper_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_upper_table = bcf_quotient_lucas_convolution_shift_upper_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_upper_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_upper_table) + (bcf_value_lucas_convolution_shift_upper_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_upper_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_upper_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_upper_table_zero_row. bcf_index_lucas_convolution_shift_upper_table_zero_row = S bcf_predecessor_lucas_convolution_shift_upper_table_zero_row /\ bcf_value_lucas_convolution_shift_upper_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_upper_table bcf_previous_code_lucas_convolution_shift_upper_table bcf_previous_scale_lucas_convolution_shift_upper_table. bcf_row_index_lucas_convolution_shift_upper_table = S bcf_predecessor_lucas_convolution_shift_upper_table /\ ((((exists bcf_height_lucas_convolution_shift_upper_table_decoded_previous_code. bcf_height_lucas_convolution_shift_upper_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_upper_table) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_upper) + (bcf_previous_code_lucas_convolution_shift_upper_table))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_upper_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_upper_table) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper) + (bcf_previous_scale_lucas_convolution_shift_upper_table))) /\ (forall bcf_index_lucas_convolution_shift_upper_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_upper_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_upper_table_row_step_bound + S (bcf_index_lucas_convolution_shift_upper_table_row_step) = S (p + a)) -> exists bcf_value_lucas_convolution_shift_upper_table_row_step. ((((exists bcf_height_lucas_convolution_shift_upper_table_row_step_entry. bcf_height_lucas_convolution_shift_upper_table_row_step_entry + S (bcf_value_lucas_convolution_shift_upper_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_upper_table_row_step)) * bcf_row_scale_lucas_convolution_shift_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_row_step_entry. bcf_row_code_lucas_convolution_shift_upper_table = bcf_quotient_lucas_convolution_shift_upper_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_upper_table_row_step)) * bcf_row_scale_lucas_convolution_shift_upper_table) + (bcf_value_lucas_convolution_shift_upper_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_upper_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_upper_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_upper_table_row_step bcf_left_lucas_convolution_shift_upper_table_row_step bcf_right_lucas_convolution_shift_upper_table_row_step. bcf_index_lucas_convolution_shift_upper_table_row_step = S bcf_predecessor_lucas_convolution_shift_upper_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_upper_table_row_step_previous_left. bcf_height_lucas_convolution_shift_upper_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_upper_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_upper_table = bcf_quotient_lucas_convolution_shift_upper_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_upper_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_upper_table) + (bcf_left_lucas_convolution_shift_upper_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_table_row_step_previous_right. bcf_height_lucas_convolution_shift_upper_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_upper_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_upper_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_upper_table = bcf_quotient_lucas_convolution_shift_upper_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_upper_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_upper_table) + (bcf_right_lucas_convolution_shift_upper_table_row_step))) /\ bcf_value_lucas_convolution_shift_upper_table_row_step = bcf_left_lucas_convolution_shift_upper_table_row_step + bcf_right_lucas_convolution_shift_upper_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_decoded_row_code. bcf_height_lucas_convolution_shift_upper_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_upper) = S ((S (p + a)) * bcf_row_code_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_decoded_row_code * S ((S (p + a)) * bcf_row_code_scale_lucas_convolution_shift_upper) + (bcf_row_code_lucas_convolution_shift_upper))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_decoded_row_scale. bcf_height_lucas_convolution_shift_upper_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_upper) = S ((S (p + a)) * bcf_row_scale_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_decoded_row_scale * S ((S (p + a)) * bcf_row_scale_scale_lucas_convolution_shift_upper) + (bcf_row_scale_lucas_convolution_shift_upper))) /\ (((exists bcf_height_lucas_convolution_shift_upper_decoded_value. bcf_height_lucas_convolution_shift_upper_decoded_value + S (C) = S ((S (b)) * bcf_row_scale_lucas_convolution_shift_upper)) /\ exists bcf_quotient_lucas_convolution_shift_upper_decoded_value. bcf_row_code_lucas_convolution_shift_upper = bcf_quotient_lucas_convolution_shift_upper_decoded_value * S ((S (b)) * bcf_row_scale_lucas_convolution_shift_upper) + (C))))))))) -> (((exists bcf_lt_gap_lucas_convolution_shift_lower_out_of_range. bcf_lt_gap_lucas_convolution_shift_lower_out_of_range + S (a) = b) /\ D = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_lower_in_range. bcf_le_gap_lucas_convolution_shift_lower_in_range + (b) = a) /\ (exists bcf_row_code_code_lucas_convolution_shift_lower bcf_row_code_scale_lucas_convolution_shift_lower bcf_row_scale_code_lucas_convolution_shift_lower bcf_row_scale_scale_lucas_convolution_shift_lower bcf_row_code_lucas_convolution_shift_lower bcf_row_scale_lucas_convolution_shift_lower. ((forall bcf_row_index_lucas_convolution_shift_lower_table. (exists bcf_lt_gap_lucas_convolution_shift_lower_table_row_bound. bcf_lt_gap_lucas_convolution_shift_lower_table_row_bound + S (bcf_row_index_lucas_convolution_shift_lower_table) = S (a)) -> exists bcf_row_code_lucas_convolution_shift_lower_table bcf_row_scale_lucas_convolution_shift_lower_table. ((((exists bcf_height_lucas_convolution_shift_lower_table_decoded_row_code. bcf_height_lucas_convolution_shift_lower_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_lower_table) = S ((S (bcf_row_index_lucas_convolution_shift_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_lower) + (bcf_row_code_lucas_convolution_shift_lower_table))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_table_decoded_row_scale. bcf_height_lucas_convolution_shift_lower_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_lower_table) = S ((S (bcf_row_index_lucas_convolution_shift_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower) + (bcf_row_scale_lucas_convolution_shift_lower_table))) /\ ((bcf_row_index_lucas_convolution_shift_lower_table = 0 /\ (forall bcf_index_lucas_convolution_shift_lower_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_lower_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_lower_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_lower_table_zero_row) = S (a)) -> exists bcf_value_lucas_convolution_shift_lower_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_lower_table_zero_row_entry. bcf_height_lucas_convolution_shift_lower_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_lower_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_lower_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_lower_table = bcf_quotient_lucas_convolution_shift_lower_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_lower_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_lower_table) + (bcf_value_lucas_convolution_shift_lower_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_lower_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_lower_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_lower_table_zero_row. bcf_index_lucas_convolution_shift_lower_table_zero_row = S bcf_predecessor_lucas_convolution_shift_lower_table_zero_row /\ bcf_value_lucas_convolution_shift_lower_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_lower_table bcf_previous_code_lucas_convolution_shift_lower_table bcf_previous_scale_lucas_convolution_shift_lower_table. bcf_row_index_lucas_convolution_shift_lower_table = S bcf_predecessor_lucas_convolution_shift_lower_table /\ ((((exists bcf_height_lucas_convolution_shift_lower_table_decoded_previous_code. bcf_height_lucas_convolution_shift_lower_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_lower_table) = S ((S (bcf_predecessor_lucas_convolution_shift_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_lower) + (bcf_previous_code_lucas_convolution_shift_lower_table))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_lower_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_lower_table) = S ((S (bcf_predecessor_lucas_convolution_shift_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower) + (bcf_previous_scale_lucas_convolution_shift_lower_table))) /\ (forall bcf_index_lucas_convolution_shift_lower_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_lower_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_lower_table_row_step_bound + S (bcf_index_lucas_convolution_shift_lower_table_row_step) = S (a)) -> exists bcf_value_lucas_convolution_shift_lower_table_row_step. ((((exists bcf_height_lucas_convolution_shift_lower_table_row_step_entry. bcf_height_lucas_convolution_shift_lower_table_row_step_entry + S (bcf_value_lucas_convolution_shift_lower_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_lower_table_row_step)) * bcf_row_scale_lucas_convolution_shift_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_row_step_entry. bcf_row_code_lucas_convolution_shift_lower_table = bcf_quotient_lucas_convolution_shift_lower_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_lower_table_row_step)) * bcf_row_scale_lucas_convolution_shift_lower_table) + (bcf_value_lucas_convolution_shift_lower_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_lower_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_lower_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_lower_table_row_step bcf_left_lucas_convolution_shift_lower_table_row_step bcf_right_lucas_convolution_shift_lower_table_row_step. bcf_index_lucas_convolution_shift_lower_table_row_step = S bcf_predecessor_lucas_convolution_shift_lower_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_lower_table_row_step_previous_left. bcf_height_lucas_convolution_shift_lower_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_lower_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_lower_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_lower_table = bcf_quotient_lucas_convolution_shift_lower_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_lower_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_lower_table) + (bcf_left_lucas_convolution_shift_lower_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_table_row_step_previous_right. bcf_height_lucas_convolution_shift_lower_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_lower_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_lower_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_lower_table = bcf_quotient_lucas_convolution_shift_lower_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_lower_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_lower_table) + (bcf_right_lucas_convolution_shift_lower_table_row_step))) /\ bcf_value_lucas_convolution_shift_lower_table_row_step = bcf_left_lucas_convolution_shift_lower_table_row_step + bcf_right_lucas_convolution_shift_lower_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_decoded_row_code. bcf_height_lucas_convolution_shift_lower_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_lower) = S ((S (a)) * bcf_row_code_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_decoded_row_code * S ((S (a)) * bcf_row_code_scale_lucas_convolution_shift_lower) + (bcf_row_code_lucas_convolution_shift_lower))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_decoded_row_scale. bcf_height_lucas_convolution_shift_lower_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_lower) = S ((S (a)) * bcf_row_scale_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_decoded_row_scale * S ((S (a)) * bcf_row_scale_scale_lucas_convolution_shift_lower) + (bcf_row_scale_lucas_convolution_shift_lower))) /\ (((exists bcf_height_lucas_convolution_shift_lower_decoded_value. bcf_height_lucas_convolution_shift_lower_decoded_value + S (D) = S ((S (b)) * bcf_row_scale_lucas_convolution_shift_lower)) /\ exists bcf_quotient_lucas_convolution_shift_lower_decoded_value. bcf_row_code_lucas_convolution_shift_lower = bcf_quotient_lucas_convolution_shift_lower_decoded_value * S ((S (b)) * bcf_row_scale_lucas_convolution_shift_lower) + (D))))))))) -> (exists lcv_left_shift_result lcv_right_shift_result. (C) + (p) * lcv_left_shift_result = (D) + (p) * lcv_right_shift_result)

Proof neighborhood

Direct theorem prerequisites

eq_decidable · Stable closed LU000P lucas_choose_zero_index_is_one mod_eq_refl · Stable closed choose_upper_eq_transport · Alpha closed LU000T lucas_prime_row_interior_zero_mod LU000Q lucas_choose_zero_upper_positive_is_zero nonzero_is_succ · Stable closed LU000V lucas_predecessor_digit_below_base choose_exists · Alpha closed LU000O lucas_choose_lower_eq_transport choose_succ_succ · Alpha closed LU000U lucas_pascal_congruence_step

Direct theorem dependents

Definition-aware tactic body

Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.

Read the argument

Proof checkpoints

179 script commands · 37 reading checkpoints · 21 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (6)
01Fix variables and assumptionsL1–1

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
02Induction on aL2–9

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L2
    induction a
  2. L3
    intro b
  3. L4
    intro C
  4. L5
    intro D
  5. L6
    intro hprime
  6. L7
    intro hbound
  7. L8
    intro hupper
  8. L9
    intro hlower
03Establish hcaseL10–13

Establish this local claim before using it. It is not an additional assumption.

  1. L10
    have hcase : b = 0 \/ ~(b = 0)
  2. L11
    specialize eq_decidable b
  3. L12
    specialize eq_decidable 0
  4. L13
    exact eq_decidable
04Separate the logical casesL14–14

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L14
    cases hcase
05Establish hCL15–21

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose zero index is one.

  1. L15
    have hC : C = 1
  2. L16
    specialize lucas_choose_zero_index_is_one (p + 0)
  3. L17
    specialize lucas_choose_zero_index_is_one b
  4. L18
    specialize lucas_choose_zero_index_is_one C
  5. L19
    apply lucas_choose_zero_index_is_one
  6. L20
    exact hcase_left
  7. L21
    exact hupper
06Establish hDL22–31

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose zero index is one.

  1. L22
    have hD : D = 1
  2. L23
    specialize lucas_choose_zero_index_is_one 0
  3. L24
    specialize lucas_choose_zero_index_is_one b
  4. L25
    specialize lucas_choose_zero_index_is_one D
  5. L26
    apply lucas_choose_zero_index_is_one
  6. L27
    exact hcase_left
  7. L28
    exact hlower
  8. L29
    rewrite hC
  9. L30
    rewrite hD
  10. L31
    specialize mod_eq_refl p
07Use earlier factsL32–33

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L32
    specialize mod_eq_refl 1
  2. L33
    exact mod_eq_refl
08Establish hDzeroL34–39

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose zero upper positive is zero.

  1. L34
    have hDzero : D = 0
  2. L35
    specialize lucas_choose_zero_upper_positive_is_zero b
  3. L36
    specialize lucas_choose_zero_upper_positive_is_zero D
  4. L37
    apply lucas_choose_zero_upper_positive_is_zero
  5. L38
    exact hcase_right
  6. L39
    exact hlower
09Establish hprime_rowL40–49

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose upper eq transport.

  1. L40
    have hprime_row : Choose(p,b,C)Definitions: Choose(p,b,C)Original native command in the exact edition
  2. L41
    specialize choose_upper_eq_transport (p + 0)
  3. L42
    specialize choose_upper_eq_transport p
  4. L43
    specialize choose_upper_eq_transport b
  5. L44
    specialize choose_upper_eq_transport C
  6. L45
    apply choose_upper_eq_transport
  7. L46
    apply PA3
  8. L47
    exact hupper
  9. L48
    rewrite hDzero
  10. L49
    specialize lucas_prime_row_interior_zero_mod p
10Use earlier factsL50–56

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L50
    specialize lucas_prime_row_interior_zero_mod b
  2. L51
    specialize lucas_prime_row_interior_zero_mod C
  3. L52
    apply lucas_prime_row_interior_zero_mod
  4. L53
    exact hprime
  5. L54
    exact hcase_right
  6. L55
    exact hbound
  7. L56
    exact hprime_row
11Fix variables and assumptionsL57–63

Work with arbitrary variables or the premises of the current implication.

  1. L57
    intro b
  2. L58
    intro C
  3. L59
    intro D
  4. L60
    intro hprime
  5. L61
    intro hbound
  6. L62
    intro hupper
  7. L63
    intro hlower
12Establish hcaseL64–67

Establish this local claim before using it. It is not an additional assumption.

  1. L64
    have hcase : b = 0 \/ ~(b = 0)
  2. L65
    specialize eq_decidable b
  3. L66
    specialize eq_decidable 0
  4. L67
    exact eq_decidable
13Separate the logical casesL68–68

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L68
    cases hcase
14Establish hCL69–75

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose zero index is one.

  1. L69
    have hC : C = 1
  2. L70
    specialize lucas_choose_zero_index_is_one (p + S a)
  3. L71
    specialize lucas_choose_zero_index_is_one b
  4. L72
    specialize lucas_choose_zero_index_is_one C
  5. L73
    apply lucas_choose_zero_index_is_one
  6. L74
    exact hcase_left
  7. L75
    exact hupper
15Establish hDL76–85

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose zero index is one.

  1. L76
    have hD : D = 1
  2. L77
    specialize lucas_choose_zero_index_is_one (S a)
  3. L78
    specialize lucas_choose_zero_index_is_one b
  4. L79
    specialize lucas_choose_zero_index_is_one D
  5. L80
    apply lucas_choose_zero_index_is_one
  6. L81
    exact hcase_left
  7. L82
    exact hlower
  8. L83
    rewrite hC
  9. L84
    rewrite hD
  10. L85
    specialize mod_eq_refl p
16Use earlier factsL86–87

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L86
    specialize mod_eq_refl 1
  2. L87
    exact mod_eq_refl
17Establish hsuccessorL88–91

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply nonzero is succ.

  1. L88
    have hsuccessor : exists k. b = S k
  2. L89
    specialize nonzero_is_succ b
  3. L90
    apply nonzero_is_succ
  4. L91
    exact hcase_right
18Separate the logical casesL92–92

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L92
    cases hsuccessor
19Establish hsuccessor_boundL93–95

Establish this local claim before using it. It is not an additional assumption.

  1. L93
    have hsuccessor_bound : Lt(S x,p)Definitions: Lt(S x,p)Original native command in the exact edition
  2. L94
    rewrite <- hsuccessor_witness
  3. L95
    exact hbound
20Establish hpredecessor_boundL96–100

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas predecessor digit below base.

  1. L96
    have hpredecessor_bound : Lt(x,p)Definitions: Lt(x,p)Original native command in the exact edition
  2. L97
    specialize lucas_predecessor_digit_below_base p
  3. L98
    specialize lucas_predecessor_digit_below_base x
  4. L99
    apply lucas_predecessor_digit_below_base
  5. L100
    exact hsuccessor_bound
21Establish hleft_upperL101–102

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose exists.

  1. L101
    have hleft_upper : ∃ C. Choose(p + a,x,C)Definitions: Choose(p + a,x,C)Original native command in the exact edition
  2. L102
    apply choose_exists
22Separate the logical casesL103–103

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L103
    cases hleft_upper
23Establish hright_upperL104–105

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose exists.

  1. L104
    have hright_upper : ∃ C. Choose(p + a,S x,C)Definitions: Choose(p + a,S x,C)Original native command in the exact edition
  2. L105
    apply choose_exists
24Separate the logical casesL106–106

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L106
    cases hright_upper
25Establish hleft_lowerL107–108

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose exists.

  1. L107
    have hleft_lower : ∃ C. Choose(a,x,C)Definitions: Choose(a,x,C)Original native command in the exact edition
  2. L108
    apply choose_exists
26Separate the logical casesL109–109

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L109
    cases hleft_lower
27Establish hright_lowerL110–111

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose exists.

  1. L110
    have hright_lower : ∃ C. Choose(a,S x,C)Definitions: Choose(a,S x,C)Original native command in the exact edition
  2. L111
    apply choose_exists
28Separate the logical casesL112–112

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L112
    cases hright_lower
29Establish hleft_modL113–121

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.

  1. L113
    have hleft_mod : ModEq(p,x1,x3)Definitions: ModEq(p,x1,x3)Original native command in the exact edition
  2. L114
    specialize IH x
  3. L115
    specialize IH x1
  4. L116
    specialize IH x3
  5. L117
    apply IH
  6. L118
    exact hprime
  7. L119
    exact hpredecessor_bound
  8. L120
    exact hleft_upper_witness
  9. L121
    exact hleft_lower_witness
30Establish hright_modL122–130

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.

  1. L122
    have hright_mod : ModEq(p,x2,x4)Definitions: ModEq(p,x2,x4)Original native command in the exact edition
  2. L123
    specialize IH (S x)
  3. L124
    specialize IH x2
  4. L125
    specialize IH x4
  5. L126
    apply IH
  6. L127
    exact hprime
  7. L128
    exact hsuccessor_bound
  8. L129
    exact hright_upper_witness
  9. L130
    exact hright_lower_witness
31Establish hupper_indexL131–138

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose lower eq transport.

  1. L131
    have hupper_index : Choose(p + S a,S x,C)Definitions: Choose(p + S a,S x,C)Original native command in the exact edition
  2. L132
    specialize lucas_choose_lower_eq_transport (p + S a)
  3. L133
    specialize lucas_choose_lower_eq_transport b
  4. L134
    specialize lucas_choose_lower_eq_transport (S x)
  5. L135
    specialize lucas_choose_lower_eq_transport C
  6. L136
    apply lucas_choose_lower_eq_transport
  7. L137
    exact hsuccessor_witness
  8. L138
    exact hupper
32Establish hupper_normalL139–146

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose upper eq transport.

  1. L139
    have hupper_normal : Choose(S (p + a),S x,C)Definitions: Choose(S (p + a),S x,C)Original native command in the exact edition
  2. L140
    specialize choose_upper_eq_transport (p + S a)
  3. L141
    specialize choose_upper_eq_transport (S (p + a))
  4. L142
    specialize choose_upper_eq_transport (S x)
  5. L143
    specialize choose_upper_eq_transport C
  6. L144
    apply choose_upper_eq_transport
  7. L145
    apply PA4
  8. L146
    exact hupper_index
33Establish hlower_normalL147–154

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lucas choose lower eq transport.

  1. L147
    have hlower_normal : Choose(S a,S x,D)Definitions: Choose(S a,S x,D)Original native command in the exact edition
  2. L148
    specialize lucas_choose_lower_eq_transport (S a)
  3. L149
    specialize lucas_choose_lower_eq_transport b
  4. L150
    specialize lucas_choose_lower_eq_transport (S x)
  5. L151
    specialize lucas_choose_lower_eq_transport D
  6. L152
    apply lucas_choose_lower_eq_transport
  7. L153
    exact hsuccessor_witness
  8. L154
    exact hlower
34Establish hlower_sumL155–164

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose succ succ.

  1. L155
    have hlower_sum : D = x3 + x4
  2. L156
    specialize choose_succ_succ a
  3. L157
    specialize choose_succ_succ x
  4. L158
    specialize choose_succ_succ x3
  5. L159
    specialize choose_succ_succ x4
  6. L160
    specialize choose_succ_succ D
  7. L161
    apply choose_succ_succ
  8. L162
    exact hleft_lower_witness
  9. L163
    exact hright_lower_witness
  10. L164
    exact hlower_normal
35Calculate and transport equalitiesL165–165

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L165
    rewrite hlower_sum
36Use earlier factsL166–175

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L166
    specialize lucas_pascal_congruence_step p
  2. L167
    specialize lucas_pascal_congruence_step (p + a)
  3. L168
    specialize lucas_pascal_congruence_step x
  4. L169
    specialize lucas_pascal_congruence_step x1
  5. L170
    specialize lucas_pascal_congruence_step x2
  6. L171
    specialize lucas_pascal_congruence_step C
  7. L172
    specialize lucas_pascal_congruence_step x3
  8. L173
    specialize lucas_pascal_congruence_step x4
  9. L174
    apply lucas_pascal_congruence_step
  10. L175
    exact hleft_upper_witness
37Use earlier factsL176–179

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L176
    exact hright_upper_witness
  2. L177
    exact hupper_normal
  3. L178
    exact hleft_mod
  4. L179
    exact hright_mod

Library-wide reading audit

Original defined command ledger · 179 lines
  1. 0001intro p
  2. 0002induction a
  3. 0003intro b
  4. 0004intro C
  5. 0005intro D
  6. 0006intro hprime
  7. 0007intro hbound
  8. 0008intro hupper
  9. 0009intro hlower
  10. 0010have hcase : b = 0 \/ ~(b = 0)
  11. 0011specialize eq_decidable b
  12. 0012specialize eq_decidable 0
  13. 0013exact eq_decidable
  14. 0014cases hcase
  15. 0015have hC : C = 1
  16. 0016specialize lucas_choose_zero_index_is_one (p + 0)
  17. 0017specialize lucas_choose_zero_index_is_one b
  18. 0018specialize lucas_choose_zero_index_is_one C
  19. 0019apply lucas_choose_zero_index_is_one
  20. 0020exact hcase_left
  21. 0021exact hupper
  22. 0022have hD : D = 1
  23. 0023specialize lucas_choose_zero_index_is_one 0
  24. 0024specialize lucas_choose_zero_index_is_one b
  25. 0025specialize lucas_choose_zero_index_is_one D
  26. 0026apply lucas_choose_zero_index_is_one
  27. 0027exact hcase_left
  28. 0028exact hlower
  29. 0029rewrite hC
  30. 0030rewrite hD
  31. 0031specialize mod_eq_refl p
  32. 0032specialize mod_eq_refl 1
  33. 0033exact mod_eq_refl
  34. 0034have hDzero : D = 0
  35. 0035specialize lucas_choose_zero_upper_positive_is_zero b
  36. 0036specialize lucas_choose_zero_upper_positive_is_zero D
  37. 0037apply lucas_choose_zero_upper_positive_is_zero
  38. 0038exact hcase_right
  39. 0039exact hlower
  40. 0040have hprime_row : Choose(p,b,C)
    Exact native replay linehave hprime_row : ((exists bcf_lt_gap_lucas_convolution_shift_prime_row_out_of_range. bcf_lt_gap_lucas_convolution_shift_prime_row_out_of_range + S (p) = b) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_prime_row_in_range. bcf_le_gap_lucas_convolution_shift_prime_row_in_range + (b) = p) /\ (exists bcf_row_code_code_lucas_convolution_shift_prime_row bcf_row_code_scale_lucas_convolution_shift_prime_row bcf_row_scale_code_lucas_convolution_shift_prime_row bcf_row_scale_scale_lucas_convolution_shift_prime_row bcf_row_code_lucas_convolution_shift_prime_row bcf_row_scale_lucas_convolution_shift_prime_row. ((forall bcf_row_index_lucas_convolution_shift_prime_row_table. (exists bcf_lt_gap_lucas_convolution_shift_prime_row_table_row_bound. bcf_lt_gap_lucas_convolution_shift_prime_row_table_row_bound + S (bcf_row_index_lucas_convolution_shift_prime_row_table) = S (p)) -> exists bcf_row_code_lucas_convolution_shift_prime_row_table bcf_row_scale_lucas_convolution_shift_prime_row_table. ((((exists bcf_height_lucas_convolution_shift_prime_row_table_decoded_row_code. bcf_height_lucas_convolution_shift_prime_row_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_prime_row_table) = S ((S (bcf_row_index_lucas_convolution_shift_prime_row_table)) * bcf_row_code_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_prime_row_table)) * bcf_row_code_scale_lucas_convolution_shift_prime_row) + (bcf_row_code_lucas_convolution_shift_prime_row_table))) /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_table_decoded_row_scale. bcf_height_lucas_convolution_shift_prime_row_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_prime_row_table) = S ((S (bcf_row_index_lucas_convolution_shift_prime_row_table)) * bcf_row_scale_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_prime_row_table)) * bcf_row_scale_scale_lucas_convolution_shift_prime_row) + (bcf_row_scale_lucas_convolution_shift_prime_row_table))) /\ ((bcf_row_index_lucas_convolution_shift_prime_row_table = 0 /\ (forall bcf_index_lucas_convolution_shift_prime_row_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_prime_row_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_prime_row_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_prime_row_table_zero_row) = S (p)) -> exists bcf_value_lucas_convolution_shift_prime_row_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_prime_row_table_zero_row_entry. bcf_height_lucas_convolution_shift_prime_row_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_prime_row_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_prime_row_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_prime_row_table)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_prime_row_table = bcf_quotient_lucas_convolution_shift_prime_row_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_prime_row_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_prime_row_table) + (bcf_value_lucas_convolution_shift_prime_row_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_prime_row_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_prime_row_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_prime_row_table_zero_row. bcf_index_lucas_convolution_shift_prime_row_table_zero_row = S bcf_predecessor_lucas_convolution_shift_prime_row_table_zero_row /\ bcf_value_lucas_convolution_shift_prime_row_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_prime_row_table bcf_previous_code_lucas_convolution_shift_prime_row_table bcf_previous_scale_lucas_convolution_shift_prime_row_table. bcf_row_index_lucas_convolution_shift_prime_row_table = S bcf_predecessor_lucas_convolution_shift_prime_row_table /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_table_decoded_previous_code. bcf_height_lucas_convolution_shift_prime_row_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_prime_row_table) = S ((S (bcf_predecessor_lucas_convolution_shift_prime_row_table)) * bcf_row_code_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_prime_row_table)) * bcf_row_code_scale_lucas_convolution_shift_prime_row) + (bcf_previous_code_lucas_convolution_shift_prime_row_table))) /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_prime_row_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_prime_row_table) = S ((S (bcf_predecessor_lucas_convolution_shift_prime_row_table)) * bcf_row_scale_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_prime_row_table)) * bcf_row_scale_scale_lucas_convolution_shift_prime_row) + (bcf_previous_scale_lucas_convolution_shift_prime_row_table))) /\ (forall bcf_index_lucas_convolution_shift_prime_row_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_prime_row_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_prime_row_table_row_step_bound + S (bcf_index_lucas_convolution_shift_prime_row_table_row_step) = S (p)) -> exists bcf_value_lucas_convolution_shift_prime_row_table_row_step. ((((exists bcf_height_lucas_convolution_shift_prime_row_table_row_step_entry. bcf_height_lucas_convolution_shift_prime_row_table_row_step_entry + S (bcf_value_lucas_convolution_shift_prime_row_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_prime_row_table_row_step)) * bcf_row_scale_lucas_convolution_shift_prime_row_table)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_row_step_entry. bcf_row_code_lucas_convolution_shift_prime_row_table = bcf_quotient_lucas_convolution_shift_prime_row_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_prime_row_table_row_step)) * bcf_row_scale_lucas_convolution_shift_prime_row_table) + (bcf_value_lucas_convolution_shift_prime_row_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_prime_row_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_prime_row_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_prime_row_table_row_step bcf_left_lucas_convolution_shift_prime_row_table_row_step bcf_right_lucas_convolution_shift_prime_row_table_row_step. bcf_index_lucas_convolution_shift_prime_row_table_row_step = S bcf_predecessor_lucas_convolution_shift_prime_row_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_table_row_step_previous_left. bcf_height_lucas_convolution_shift_prime_row_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_prime_row_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_prime_row_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_prime_row_table)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_prime_row_table = bcf_quotient_lucas_convolution_shift_prime_row_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_prime_row_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_prime_row_table) + (bcf_left_lucas_convolution_shift_prime_row_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_table_row_step_previous_right. bcf_height_lucas_convolution_shift_prime_row_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_prime_row_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_prime_row_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_prime_row_table)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_prime_row_table = bcf_quotient_lucas_convolution_shift_prime_row_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_prime_row_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_prime_row_table) + (bcf_right_lucas_convolution_shift_prime_row_table_row_step))) /\ bcf_value_lucas_convolution_shift_prime_row_table_row_step = bcf_left_lucas_convolution_shift_prime_row_table_row_step + bcf_right_lucas_convolution_shift_prime_row_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_decoded_row_code. bcf_height_lucas_convolution_shift_prime_row_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_prime_row) = S ((S (p)) * bcf_row_code_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_decoded_row_code * S ((S (p)) * bcf_row_code_scale_lucas_convolution_shift_prime_row) + (bcf_row_code_lucas_convolution_shift_prime_row))) /\ ((((exists bcf_height_lucas_convolution_shift_prime_row_decoded_row_scale. bcf_height_lucas_convolution_shift_prime_row_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_prime_row) = S ((S (p)) * bcf_row_scale_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_decoded_row_scale * S ((S (p)) * bcf_row_scale_scale_lucas_convolution_shift_prime_row) + (bcf_row_scale_lucas_convolution_shift_prime_row))) /\ (((exists bcf_height_lucas_convolution_shift_prime_row_decoded_value. bcf_height_lucas_convolution_shift_prime_row_decoded_value + S (C) = S ((S (b)) * bcf_row_scale_lucas_convolution_shift_prime_row)) /\ exists bcf_quotient_lucas_convolution_shift_prime_row_decoded_value. bcf_row_code_lucas_convolution_shift_prime_row = bcf_quotient_lucas_convolution_shift_prime_row_decoded_value * S ((S (b)) * bcf_row_scale_lucas_convolution_shift_prime_row) + (C))))))))
  41. 0041specialize choose_upper_eq_transport (p + 0)
  42. 0042specialize choose_upper_eq_transport p
  43. 0043specialize choose_upper_eq_transport b
  44. 0044specialize choose_upper_eq_transport C
  45. 0045apply choose_upper_eq_transport
  46. 0046apply PA3
  47. 0047exact hupper
  48. 0048rewrite hDzero
  49. 0049specialize lucas_prime_row_interior_zero_mod p
  50. 0050specialize lucas_prime_row_interior_zero_mod b
  51. 0051specialize lucas_prime_row_interior_zero_mod C
  52. 0052apply lucas_prime_row_interior_zero_mod
  53. 0053exact hprime
  54. 0054exact hcase_right
  55. 0055exact hbound
  56. 0056exact hprime_row
  57. 0057intro b
  58. 0058intro C
  59. 0059intro D
  60. 0060intro hprime
  61. 0061intro hbound
  62. 0062intro hupper
  63. 0063intro hlower
  64. 0064have hcase : b = 0 \/ ~(b = 0)
  65. 0065specialize eq_decidable b
  66. 0066specialize eq_decidable 0
  67. 0067exact eq_decidable
  68. 0068cases hcase
  69. 0069have hC : C = 1
  70. 0070specialize lucas_choose_zero_index_is_one (p + S a)
  71. 0071specialize lucas_choose_zero_index_is_one b
  72. 0072specialize lucas_choose_zero_index_is_one C
  73. 0073apply lucas_choose_zero_index_is_one
  74. 0074exact hcase_left
  75. 0075exact hupper
  76. 0076have hD : D = 1
  77. 0077specialize lucas_choose_zero_index_is_one (S a)
  78. 0078specialize lucas_choose_zero_index_is_one b
  79. 0079specialize lucas_choose_zero_index_is_one D
  80. 0080apply lucas_choose_zero_index_is_one
  81. 0081exact hcase_left
  82. 0082exact hlower
  83. 0083rewrite hC
  84. 0084rewrite hD
  85. 0085specialize mod_eq_refl p
  86. 0086specialize mod_eq_refl 1
  87. 0087exact mod_eq_refl
  88. 0088have hsuccessor : exists k. b = S k
  89. 0089specialize nonzero_is_succ b
  90. 0090apply nonzero_is_succ
  91. 0091exact hcase_right
  92. 0092cases hsuccessor
  93. 0093have hsuccessor_bound : Lt(S x,p)
    Exact native replay linehave hsuccessor_bound : exists lcv_gap_shift_successor_bound. lcv_gap_shift_successor_bound + S (S x) = (p)
  94. 0094rewrite <- hsuccessor_witness
  95. 0095exact hbound
  96. 0096have hpredecessor_bound : Lt(x,p)
    Exact native replay linehave hpredecessor_bound : exists lcv_gap_shift_predecessor_bound. lcv_gap_shift_predecessor_bound + S (x) = (p)
  97. 0097specialize lucas_predecessor_digit_below_base p
  98. 0098specialize lucas_predecessor_digit_below_base x
  99. 0099apply lucas_predecessor_digit_below_base
  100. 0100exact hsuccessor_bound
  101. 0101have hleft_upper : ∃ C. Choose(p + a,x,C)
    Exact native replay linehave hleft_upper : exists C. ((exists bcf_lt_gap_lucas_convolution_shift_left_upper_out_of_range. bcf_lt_gap_lucas_convolution_shift_left_upper_out_of_range + S (p + a) = x) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_left_upper_in_range. bcf_le_gap_lucas_convolution_shift_left_upper_in_range + (x) = p + a) /\ (exists bcf_row_code_code_lucas_convolution_shift_left_upper bcf_row_code_scale_lucas_convolution_shift_left_upper bcf_row_scale_code_lucas_convolution_shift_left_upper bcf_row_scale_scale_lucas_convolution_shift_left_upper bcf_row_code_lucas_convolution_shift_left_upper bcf_row_scale_lucas_convolution_shift_left_upper. ((forall bcf_row_index_lucas_convolution_shift_left_upper_table. (exists bcf_lt_gap_lucas_convolution_shift_left_upper_table_row_bound. bcf_lt_gap_lucas_convolution_shift_left_upper_table_row_bound + S (bcf_row_index_lucas_convolution_shift_left_upper_table) = S (p + a)) -> exists bcf_row_code_lucas_convolution_shift_left_upper_table bcf_row_scale_lucas_convolution_shift_left_upper_table. ((((exists bcf_height_lucas_convolution_shift_left_upper_table_decoded_row_code. bcf_height_lucas_convolution_shift_left_upper_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_left_upper_table) = S ((S (bcf_row_index_lucas_convolution_shift_left_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_left_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_left_upper) + (bcf_row_code_lucas_convolution_shift_left_upper_table))) /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_table_decoded_row_scale. bcf_height_lucas_convolution_shift_left_upper_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_left_upper_table) = S ((S (bcf_row_index_lucas_convolution_shift_left_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_left_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_upper) + (bcf_row_scale_lucas_convolution_shift_left_upper_table))) /\ ((bcf_row_index_lucas_convolution_shift_left_upper_table = 0 /\ (forall bcf_index_lucas_convolution_shift_left_upper_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_left_upper_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_left_upper_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_left_upper_table_zero_row) = S (p + a)) -> exists bcf_value_lucas_convolution_shift_left_upper_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_left_upper_table_zero_row_entry. bcf_height_lucas_convolution_shift_left_upper_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_left_upper_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_left_upper_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_left_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_left_upper_table = bcf_quotient_lucas_convolution_shift_left_upper_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_left_upper_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_left_upper_table) + (bcf_value_lucas_convolution_shift_left_upper_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_left_upper_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_left_upper_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_left_upper_table_zero_row. bcf_index_lucas_convolution_shift_left_upper_table_zero_row = S bcf_predecessor_lucas_convolution_shift_left_upper_table_zero_row /\ bcf_value_lucas_convolution_shift_left_upper_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_left_upper_table bcf_previous_code_lucas_convolution_shift_left_upper_table bcf_previous_scale_lucas_convolution_shift_left_upper_table. bcf_row_index_lucas_convolution_shift_left_upper_table = S bcf_predecessor_lucas_convolution_shift_left_upper_table /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_table_decoded_previous_code. bcf_height_lucas_convolution_shift_left_upper_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_left_upper_table) = S ((S (bcf_predecessor_lucas_convolution_shift_left_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_left_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_left_upper) + (bcf_previous_code_lucas_convolution_shift_left_upper_table))) /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_left_upper_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_left_upper_table) = S ((S (bcf_predecessor_lucas_convolution_shift_left_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_left_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_upper) + (bcf_previous_scale_lucas_convolution_shift_left_upper_table))) /\ (forall bcf_index_lucas_convolution_shift_left_upper_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_left_upper_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_left_upper_table_row_step_bound + S (bcf_index_lucas_convolution_shift_left_upper_table_row_step) = S (p + a)) -> exists bcf_value_lucas_convolution_shift_left_upper_table_row_step. ((((exists bcf_height_lucas_convolution_shift_left_upper_table_row_step_entry. bcf_height_lucas_convolution_shift_left_upper_table_row_step_entry + S (bcf_value_lucas_convolution_shift_left_upper_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_left_upper_table_row_step)) * bcf_row_scale_lucas_convolution_shift_left_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_row_step_entry. bcf_row_code_lucas_convolution_shift_left_upper_table = bcf_quotient_lucas_convolution_shift_left_upper_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_left_upper_table_row_step)) * bcf_row_scale_lucas_convolution_shift_left_upper_table) + (bcf_value_lucas_convolution_shift_left_upper_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_left_upper_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_left_upper_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_left_upper_table_row_step bcf_left_lucas_convolution_shift_left_upper_table_row_step bcf_right_lucas_convolution_shift_left_upper_table_row_step. bcf_index_lucas_convolution_shift_left_upper_table_row_step = S bcf_predecessor_lucas_convolution_shift_left_upper_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_table_row_step_previous_left. bcf_height_lucas_convolution_shift_left_upper_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_left_upper_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_left_upper_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_left_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_left_upper_table = bcf_quotient_lucas_convolution_shift_left_upper_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_left_upper_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_left_upper_table) + (bcf_left_lucas_convolution_shift_left_upper_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_table_row_step_previous_right. bcf_height_lucas_convolution_shift_left_upper_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_left_upper_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_left_upper_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_left_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_left_upper_table = bcf_quotient_lucas_convolution_shift_left_upper_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_left_upper_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_left_upper_table) + (bcf_right_lucas_convolution_shift_left_upper_table_row_step))) /\ bcf_value_lucas_convolution_shift_left_upper_table_row_step = bcf_left_lucas_convolution_shift_left_upper_table_row_step + bcf_right_lucas_convolution_shift_left_upper_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_decoded_row_code. bcf_height_lucas_convolution_shift_left_upper_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_left_upper) = S ((S (p + a)) * bcf_row_code_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_decoded_row_code * S ((S (p + a)) * bcf_row_code_scale_lucas_convolution_shift_left_upper) + (bcf_row_code_lucas_convolution_shift_left_upper))) /\ ((((exists bcf_height_lucas_convolution_shift_left_upper_decoded_row_scale. bcf_height_lucas_convolution_shift_left_upper_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_left_upper) = S ((S (p + a)) * bcf_row_scale_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_decoded_row_scale * S ((S (p + a)) * bcf_row_scale_scale_lucas_convolution_shift_left_upper) + (bcf_row_scale_lucas_convolution_shift_left_upper))) /\ (((exists bcf_height_lucas_convolution_shift_left_upper_decoded_value. bcf_height_lucas_convolution_shift_left_upper_decoded_value + S (C) = S ((S (x)) * bcf_row_scale_lucas_convolution_shift_left_upper)) /\ exists bcf_quotient_lucas_convolution_shift_left_upper_decoded_value. bcf_row_code_lucas_convolution_shift_left_upper = bcf_quotient_lucas_convolution_shift_left_upper_decoded_value * S ((S (x)) * bcf_row_scale_lucas_convolution_shift_left_upper) + (C))))))))
  102. 0102apply choose_exists
  103. 0103cases hleft_upper
  104. 0104have hright_upper : ∃ C. Choose(p + a,S x,C)
    Exact native replay linehave hright_upper : exists C. ((exists bcf_lt_gap_lucas_convolution_shift_right_upper_out_of_range. bcf_lt_gap_lucas_convolution_shift_right_upper_out_of_range + S (p + a) = S x) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_right_upper_in_range. bcf_le_gap_lucas_convolution_shift_right_upper_in_range + (S x) = p + a) /\ (exists bcf_row_code_code_lucas_convolution_shift_right_upper bcf_row_code_scale_lucas_convolution_shift_right_upper bcf_row_scale_code_lucas_convolution_shift_right_upper bcf_row_scale_scale_lucas_convolution_shift_right_upper bcf_row_code_lucas_convolution_shift_right_upper bcf_row_scale_lucas_convolution_shift_right_upper. ((forall bcf_row_index_lucas_convolution_shift_right_upper_table. (exists bcf_lt_gap_lucas_convolution_shift_right_upper_table_row_bound. bcf_lt_gap_lucas_convolution_shift_right_upper_table_row_bound + S (bcf_row_index_lucas_convolution_shift_right_upper_table) = S (p + a)) -> exists bcf_row_code_lucas_convolution_shift_right_upper_table bcf_row_scale_lucas_convolution_shift_right_upper_table. ((((exists bcf_height_lucas_convolution_shift_right_upper_table_decoded_row_code. bcf_height_lucas_convolution_shift_right_upper_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_right_upper_table) = S ((S (bcf_row_index_lucas_convolution_shift_right_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_right_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_right_upper) + (bcf_row_code_lucas_convolution_shift_right_upper_table))) /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_table_decoded_row_scale. bcf_height_lucas_convolution_shift_right_upper_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_right_upper_table) = S ((S (bcf_row_index_lucas_convolution_shift_right_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_right_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_upper) + (bcf_row_scale_lucas_convolution_shift_right_upper_table))) /\ ((bcf_row_index_lucas_convolution_shift_right_upper_table = 0 /\ (forall bcf_index_lucas_convolution_shift_right_upper_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_right_upper_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_right_upper_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_right_upper_table_zero_row) = S (p + a)) -> exists bcf_value_lucas_convolution_shift_right_upper_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_right_upper_table_zero_row_entry. bcf_height_lucas_convolution_shift_right_upper_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_right_upper_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_right_upper_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_right_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_right_upper_table = bcf_quotient_lucas_convolution_shift_right_upper_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_right_upper_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_right_upper_table) + (bcf_value_lucas_convolution_shift_right_upper_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_right_upper_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_right_upper_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_right_upper_table_zero_row. bcf_index_lucas_convolution_shift_right_upper_table_zero_row = S bcf_predecessor_lucas_convolution_shift_right_upper_table_zero_row /\ bcf_value_lucas_convolution_shift_right_upper_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_right_upper_table bcf_previous_code_lucas_convolution_shift_right_upper_table bcf_previous_scale_lucas_convolution_shift_right_upper_table. bcf_row_index_lucas_convolution_shift_right_upper_table = S bcf_predecessor_lucas_convolution_shift_right_upper_table /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_table_decoded_previous_code. bcf_height_lucas_convolution_shift_right_upper_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_right_upper_table) = S ((S (bcf_predecessor_lucas_convolution_shift_right_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_right_upper_table)) * bcf_row_code_scale_lucas_convolution_shift_right_upper) + (bcf_previous_code_lucas_convolution_shift_right_upper_table))) /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_right_upper_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_right_upper_table) = S ((S (bcf_predecessor_lucas_convolution_shift_right_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_right_upper_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_upper) + (bcf_previous_scale_lucas_convolution_shift_right_upper_table))) /\ (forall bcf_index_lucas_convolution_shift_right_upper_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_right_upper_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_right_upper_table_row_step_bound + S (bcf_index_lucas_convolution_shift_right_upper_table_row_step) = S (p + a)) -> exists bcf_value_lucas_convolution_shift_right_upper_table_row_step. ((((exists bcf_height_lucas_convolution_shift_right_upper_table_row_step_entry. bcf_height_lucas_convolution_shift_right_upper_table_row_step_entry + S (bcf_value_lucas_convolution_shift_right_upper_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_right_upper_table_row_step)) * bcf_row_scale_lucas_convolution_shift_right_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_row_step_entry. bcf_row_code_lucas_convolution_shift_right_upper_table = bcf_quotient_lucas_convolution_shift_right_upper_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_right_upper_table_row_step)) * bcf_row_scale_lucas_convolution_shift_right_upper_table) + (bcf_value_lucas_convolution_shift_right_upper_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_right_upper_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_right_upper_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_right_upper_table_row_step bcf_left_lucas_convolution_shift_right_upper_table_row_step bcf_right_lucas_convolution_shift_right_upper_table_row_step. bcf_index_lucas_convolution_shift_right_upper_table_row_step = S bcf_predecessor_lucas_convolution_shift_right_upper_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_table_row_step_previous_left. bcf_height_lucas_convolution_shift_right_upper_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_right_upper_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_right_upper_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_right_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_right_upper_table = bcf_quotient_lucas_convolution_shift_right_upper_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_right_upper_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_right_upper_table) + (bcf_left_lucas_convolution_shift_right_upper_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_table_row_step_previous_right. bcf_height_lucas_convolution_shift_right_upper_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_right_upper_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_right_upper_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_right_upper_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_right_upper_table = bcf_quotient_lucas_convolution_shift_right_upper_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_right_upper_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_right_upper_table) + (bcf_right_lucas_convolution_shift_right_upper_table_row_step))) /\ bcf_value_lucas_convolution_shift_right_upper_table_row_step = bcf_left_lucas_convolution_shift_right_upper_table_row_step + bcf_right_lucas_convolution_shift_right_upper_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_decoded_row_code. bcf_height_lucas_convolution_shift_right_upper_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_right_upper) = S ((S (p + a)) * bcf_row_code_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_decoded_row_code * S ((S (p + a)) * bcf_row_code_scale_lucas_convolution_shift_right_upper) + (bcf_row_code_lucas_convolution_shift_right_upper))) /\ ((((exists bcf_height_lucas_convolution_shift_right_upper_decoded_row_scale. bcf_height_lucas_convolution_shift_right_upper_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_right_upper) = S ((S (p + a)) * bcf_row_scale_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_decoded_row_scale * S ((S (p + a)) * bcf_row_scale_scale_lucas_convolution_shift_right_upper) + (bcf_row_scale_lucas_convolution_shift_right_upper))) /\ (((exists bcf_height_lucas_convolution_shift_right_upper_decoded_value. bcf_height_lucas_convolution_shift_right_upper_decoded_value + S (C) = S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_right_upper)) /\ exists bcf_quotient_lucas_convolution_shift_right_upper_decoded_value. bcf_row_code_lucas_convolution_shift_right_upper = bcf_quotient_lucas_convolution_shift_right_upper_decoded_value * S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_right_upper) + (C))))))))
  105. 0105apply choose_exists
  106. 0106cases hright_upper
  107. 0107have hleft_lower : ∃ C. Choose(a,x,C)
    Exact native replay linehave hleft_lower : exists C. ((exists bcf_lt_gap_lucas_convolution_shift_left_lower_out_of_range. bcf_lt_gap_lucas_convolution_shift_left_lower_out_of_range + S (a) = x) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_left_lower_in_range. bcf_le_gap_lucas_convolution_shift_left_lower_in_range + (x) = a) /\ (exists bcf_row_code_code_lucas_convolution_shift_left_lower bcf_row_code_scale_lucas_convolution_shift_left_lower bcf_row_scale_code_lucas_convolution_shift_left_lower bcf_row_scale_scale_lucas_convolution_shift_left_lower bcf_row_code_lucas_convolution_shift_left_lower bcf_row_scale_lucas_convolution_shift_left_lower. ((forall bcf_row_index_lucas_convolution_shift_left_lower_table. (exists bcf_lt_gap_lucas_convolution_shift_left_lower_table_row_bound. bcf_lt_gap_lucas_convolution_shift_left_lower_table_row_bound + S (bcf_row_index_lucas_convolution_shift_left_lower_table) = S (a)) -> exists bcf_row_code_lucas_convolution_shift_left_lower_table bcf_row_scale_lucas_convolution_shift_left_lower_table. ((((exists bcf_height_lucas_convolution_shift_left_lower_table_decoded_row_code. bcf_height_lucas_convolution_shift_left_lower_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_left_lower_table) = S ((S (bcf_row_index_lucas_convolution_shift_left_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_left_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_left_lower) + (bcf_row_code_lucas_convolution_shift_left_lower_table))) /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_table_decoded_row_scale. bcf_height_lucas_convolution_shift_left_lower_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_left_lower_table) = S ((S (bcf_row_index_lucas_convolution_shift_left_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_left_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_lower) + (bcf_row_scale_lucas_convolution_shift_left_lower_table))) /\ ((bcf_row_index_lucas_convolution_shift_left_lower_table = 0 /\ (forall bcf_index_lucas_convolution_shift_left_lower_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_left_lower_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_left_lower_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_left_lower_table_zero_row) = S (a)) -> exists bcf_value_lucas_convolution_shift_left_lower_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_left_lower_table_zero_row_entry. bcf_height_lucas_convolution_shift_left_lower_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_left_lower_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_left_lower_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_left_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_left_lower_table = bcf_quotient_lucas_convolution_shift_left_lower_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_left_lower_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_left_lower_table) + (bcf_value_lucas_convolution_shift_left_lower_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_left_lower_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_left_lower_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_left_lower_table_zero_row. bcf_index_lucas_convolution_shift_left_lower_table_zero_row = S bcf_predecessor_lucas_convolution_shift_left_lower_table_zero_row /\ bcf_value_lucas_convolution_shift_left_lower_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_left_lower_table bcf_previous_code_lucas_convolution_shift_left_lower_table bcf_previous_scale_lucas_convolution_shift_left_lower_table. bcf_row_index_lucas_convolution_shift_left_lower_table = S bcf_predecessor_lucas_convolution_shift_left_lower_table /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_table_decoded_previous_code. bcf_height_lucas_convolution_shift_left_lower_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_left_lower_table) = S ((S (bcf_predecessor_lucas_convolution_shift_left_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_left_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_left_lower) + (bcf_previous_code_lucas_convolution_shift_left_lower_table))) /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_left_lower_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_left_lower_table) = S ((S (bcf_predecessor_lucas_convolution_shift_left_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_left_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_left_lower) + (bcf_previous_scale_lucas_convolution_shift_left_lower_table))) /\ (forall bcf_index_lucas_convolution_shift_left_lower_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_left_lower_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_left_lower_table_row_step_bound + S (bcf_index_lucas_convolution_shift_left_lower_table_row_step) = S (a)) -> exists bcf_value_lucas_convolution_shift_left_lower_table_row_step. ((((exists bcf_height_lucas_convolution_shift_left_lower_table_row_step_entry. bcf_height_lucas_convolution_shift_left_lower_table_row_step_entry + S (bcf_value_lucas_convolution_shift_left_lower_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_left_lower_table_row_step)) * bcf_row_scale_lucas_convolution_shift_left_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_row_step_entry. bcf_row_code_lucas_convolution_shift_left_lower_table = bcf_quotient_lucas_convolution_shift_left_lower_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_left_lower_table_row_step)) * bcf_row_scale_lucas_convolution_shift_left_lower_table) + (bcf_value_lucas_convolution_shift_left_lower_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_left_lower_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_left_lower_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_left_lower_table_row_step bcf_left_lucas_convolution_shift_left_lower_table_row_step bcf_right_lucas_convolution_shift_left_lower_table_row_step. bcf_index_lucas_convolution_shift_left_lower_table_row_step = S bcf_predecessor_lucas_convolution_shift_left_lower_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_table_row_step_previous_left. bcf_height_lucas_convolution_shift_left_lower_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_left_lower_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_left_lower_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_left_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_left_lower_table = bcf_quotient_lucas_convolution_shift_left_lower_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_left_lower_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_left_lower_table) + (bcf_left_lucas_convolution_shift_left_lower_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_table_row_step_previous_right. bcf_height_lucas_convolution_shift_left_lower_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_left_lower_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_left_lower_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_left_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_left_lower_table = bcf_quotient_lucas_convolution_shift_left_lower_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_left_lower_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_left_lower_table) + (bcf_right_lucas_convolution_shift_left_lower_table_row_step))) /\ bcf_value_lucas_convolution_shift_left_lower_table_row_step = bcf_left_lucas_convolution_shift_left_lower_table_row_step + bcf_right_lucas_convolution_shift_left_lower_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_decoded_row_code. bcf_height_lucas_convolution_shift_left_lower_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_left_lower) = S ((S (a)) * bcf_row_code_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_decoded_row_code * S ((S (a)) * bcf_row_code_scale_lucas_convolution_shift_left_lower) + (bcf_row_code_lucas_convolution_shift_left_lower))) /\ ((((exists bcf_height_lucas_convolution_shift_left_lower_decoded_row_scale. bcf_height_lucas_convolution_shift_left_lower_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_left_lower) = S ((S (a)) * bcf_row_scale_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_decoded_row_scale * S ((S (a)) * bcf_row_scale_scale_lucas_convolution_shift_left_lower) + (bcf_row_scale_lucas_convolution_shift_left_lower))) /\ (((exists bcf_height_lucas_convolution_shift_left_lower_decoded_value. bcf_height_lucas_convolution_shift_left_lower_decoded_value + S (C) = S ((S (x)) * bcf_row_scale_lucas_convolution_shift_left_lower)) /\ exists bcf_quotient_lucas_convolution_shift_left_lower_decoded_value. bcf_row_code_lucas_convolution_shift_left_lower = bcf_quotient_lucas_convolution_shift_left_lower_decoded_value * S ((S (x)) * bcf_row_scale_lucas_convolution_shift_left_lower) + (C))))))))
  108. 0108apply choose_exists
  109. 0109cases hleft_lower
  110. 0110have hright_lower : ∃ C. Choose(a,S x,C)
    Exact native replay linehave hright_lower : exists C. ((exists bcf_lt_gap_lucas_convolution_shift_right_lower_out_of_range. bcf_lt_gap_lucas_convolution_shift_right_lower_out_of_range + S (a) = S x) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_right_lower_in_range. bcf_le_gap_lucas_convolution_shift_right_lower_in_range + (S x) = a) /\ (exists bcf_row_code_code_lucas_convolution_shift_right_lower bcf_row_code_scale_lucas_convolution_shift_right_lower bcf_row_scale_code_lucas_convolution_shift_right_lower bcf_row_scale_scale_lucas_convolution_shift_right_lower bcf_row_code_lucas_convolution_shift_right_lower bcf_row_scale_lucas_convolution_shift_right_lower. ((forall bcf_row_index_lucas_convolution_shift_right_lower_table. (exists bcf_lt_gap_lucas_convolution_shift_right_lower_table_row_bound. bcf_lt_gap_lucas_convolution_shift_right_lower_table_row_bound + S (bcf_row_index_lucas_convolution_shift_right_lower_table) = S (a)) -> exists bcf_row_code_lucas_convolution_shift_right_lower_table bcf_row_scale_lucas_convolution_shift_right_lower_table. ((((exists bcf_height_lucas_convolution_shift_right_lower_table_decoded_row_code. bcf_height_lucas_convolution_shift_right_lower_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_right_lower_table) = S ((S (bcf_row_index_lucas_convolution_shift_right_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_right_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_right_lower) + (bcf_row_code_lucas_convolution_shift_right_lower_table))) /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_table_decoded_row_scale. bcf_height_lucas_convolution_shift_right_lower_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_right_lower_table) = S ((S (bcf_row_index_lucas_convolution_shift_right_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_right_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_lower) + (bcf_row_scale_lucas_convolution_shift_right_lower_table))) /\ ((bcf_row_index_lucas_convolution_shift_right_lower_table = 0 /\ (forall bcf_index_lucas_convolution_shift_right_lower_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_right_lower_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_right_lower_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_right_lower_table_zero_row) = S (a)) -> exists bcf_value_lucas_convolution_shift_right_lower_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_right_lower_table_zero_row_entry. bcf_height_lucas_convolution_shift_right_lower_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_right_lower_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_right_lower_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_right_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_right_lower_table = bcf_quotient_lucas_convolution_shift_right_lower_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_right_lower_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_right_lower_table) + (bcf_value_lucas_convolution_shift_right_lower_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_right_lower_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_right_lower_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_right_lower_table_zero_row. bcf_index_lucas_convolution_shift_right_lower_table_zero_row = S bcf_predecessor_lucas_convolution_shift_right_lower_table_zero_row /\ bcf_value_lucas_convolution_shift_right_lower_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_right_lower_table bcf_previous_code_lucas_convolution_shift_right_lower_table bcf_previous_scale_lucas_convolution_shift_right_lower_table. bcf_row_index_lucas_convolution_shift_right_lower_table = S bcf_predecessor_lucas_convolution_shift_right_lower_table /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_table_decoded_previous_code. bcf_height_lucas_convolution_shift_right_lower_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_right_lower_table) = S ((S (bcf_predecessor_lucas_convolution_shift_right_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_right_lower_table)) * bcf_row_code_scale_lucas_convolution_shift_right_lower) + (bcf_previous_code_lucas_convolution_shift_right_lower_table))) /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_right_lower_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_right_lower_table) = S ((S (bcf_predecessor_lucas_convolution_shift_right_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_right_lower_table)) * bcf_row_scale_scale_lucas_convolution_shift_right_lower) + (bcf_previous_scale_lucas_convolution_shift_right_lower_table))) /\ (forall bcf_index_lucas_convolution_shift_right_lower_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_right_lower_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_right_lower_table_row_step_bound + S (bcf_index_lucas_convolution_shift_right_lower_table_row_step) = S (a)) -> exists bcf_value_lucas_convolution_shift_right_lower_table_row_step. ((((exists bcf_height_lucas_convolution_shift_right_lower_table_row_step_entry. bcf_height_lucas_convolution_shift_right_lower_table_row_step_entry + S (bcf_value_lucas_convolution_shift_right_lower_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_right_lower_table_row_step)) * bcf_row_scale_lucas_convolution_shift_right_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_row_step_entry. bcf_row_code_lucas_convolution_shift_right_lower_table = bcf_quotient_lucas_convolution_shift_right_lower_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_right_lower_table_row_step)) * bcf_row_scale_lucas_convolution_shift_right_lower_table) + (bcf_value_lucas_convolution_shift_right_lower_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_right_lower_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_right_lower_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_right_lower_table_row_step bcf_left_lucas_convolution_shift_right_lower_table_row_step bcf_right_lucas_convolution_shift_right_lower_table_row_step. bcf_index_lucas_convolution_shift_right_lower_table_row_step = S bcf_predecessor_lucas_convolution_shift_right_lower_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_table_row_step_previous_left. bcf_height_lucas_convolution_shift_right_lower_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_right_lower_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_right_lower_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_right_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_right_lower_table = bcf_quotient_lucas_convolution_shift_right_lower_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_right_lower_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_right_lower_table) + (bcf_left_lucas_convolution_shift_right_lower_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_table_row_step_previous_right. bcf_height_lucas_convolution_shift_right_lower_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_right_lower_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_right_lower_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_right_lower_table)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_right_lower_table = bcf_quotient_lucas_convolution_shift_right_lower_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_right_lower_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_right_lower_table) + (bcf_right_lucas_convolution_shift_right_lower_table_row_step))) /\ bcf_value_lucas_convolution_shift_right_lower_table_row_step = bcf_left_lucas_convolution_shift_right_lower_table_row_step + bcf_right_lucas_convolution_shift_right_lower_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_decoded_row_code. bcf_height_lucas_convolution_shift_right_lower_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_right_lower) = S ((S (a)) * bcf_row_code_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_decoded_row_code * S ((S (a)) * bcf_row_code_scale_lucas_convolution_shift_right_lower) + (bcf_row_code_lucas_convolution_shift_right_lower))) /\ ((((exists bcf_height_lucas_convolution_shift_right_lower_decoded_row_scale. bcf_height_lucas_convolution_shift_right_lower_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_right_lower) = S ((S (a)) * bcf_row_scale_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_decoded_row_scale * S ((S (a)) * bcf_row_scale_scale_lucas_convolution_shift_right_lower) + (bcf_row_scale_lucas_convolution_shift_right_lower))) /\ (((exists bcf_height_lucas_convolution_shift_right_lower_decoded_value. bcf_height_lucas_convolution_shift_right_lower_decoded_value + S (C) = S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_right_lower)) /\ exists bcf_quotient_lucas_convolution_shift_right_lower_decoded_value. bcf_row_code_lucas_convolution_shift_right_lower = bcf_quotient_lucas_convolution_shift_right_lower_decoded_value * S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_right_lower) + (C))))))))
  111. 0111apply choose_exists
  112. 0112cases hright_lower
  113. 0113have hleft_mod : ModEq(p,x1,x3)
    Exact native replay linehave hleft_mod : exists lcv_left_shift_left_mod lcv_right_shift_left_mod. (x1) + (p) * lcv_left_shift_left_mod = (x3) + (p) * lcv_right_shift_left_mod
  114. 0114specialize IH x
  115. 0115specialize IH x1
  116. 0116specialize IH x3
  117. 0117apply IH
  118. 0118exact hprime
  119. 0119exact hpredecessor_bound
  120. 0120exact hleft_upper_witness
  121. 0121exact hleft_lower_witness
  122. 0122have hright_mod : ModEq(p,x2,x4)
    Exact native replay linehave hright_mod : exists lcv_left_shift_right_mod lcv_right_shift_right_mod. (x2) + (p) * lcv_left_shift_right_mod = (x4) + (p) * lcv_right_shift_right_mod
  123. 0123specialize IH (S x)
  124. 0124specialize IH x2
  125. 0125specialize IH x4
  126. 0126apply IH
  127. 0127exact hprime
  128. 0128exact hsuccessor_bound
  129. 0129exact hright_upper_witness
  130. 0130exact hright_lower_witness
  131. 0131have hupper_index : Choose(p + S a,S x,C)
    Exact native replay linehave hupper_index : ((exists bcf_lt_gap_lucas_convolution_shift_upper_index_out_of_range. bcf_lt_gap_lucas_convolution_shift_upper_index_out_of_range + S (p + S a) = S x) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_upper_index_in_range. bcf_le_gap_lucas_convolution_shift_upper_index_in_range + (S x) = p + S a) /\ (exists bcf_row_code_code_lucas_convolution_shift_upper_index bcf_row_code_scale_lucas_convolution_shift_upper_index bcf_row_scale_code_lucas_convolution_shift_upper_index bcf_row_scale_scale_lucas_convolution_shift_upper_index bcf_row_code_lucas_convolution_shift_upper_index bcf_row_scale_lucas_convolution_shift_upper_index. ((forall bcf_row_index_lucas_convolution_shift_upper_index_table. (exists bcf_lt_gap_lucas_convolution_shift_upper_index_table_row_bound. bcf_lt_gap_lucas_convolution_shift_upper_index_table_row_bound + S (bcf_row_index_lucas_convolution_shift_upper_index_table) = S (p + S a)) -> exists bcf_row_code_lucas_convolution_shift_upper_index_table bcf_row_scale_lucas_convolution_shift_upper_index_table. ((((exists bcf_height_lucas_convolution_shift_upper_index_table_decoded_row_code. bcf_height_lucas_convolution_shift_upper_index_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_upper_index_table) = S ((S (bcf_row_index_lucas_convolution_shift_upper_index_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_upper_index_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_index) + (bcf_row_code_lucas_convolution_shift_upper_index_table))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_table_decoded_row_scale. bcf_height_lucas_convolution_shift_upper_index_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_upper_index_table) = S ((S (bcf_row_index_lucas_convolution_shift_upper_index_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_upper_index_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_index) + (bcf_row_scale_lucas_convolution_shift_upper_index_table))) /\ ((bcf_row_index_lucas_convolution_shift_upper_index_table = 0 /\ (forall bcf_index_lucas_convolution_shift_upper_index_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_upper_index_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_upper_index_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_upper_index_table_zero_row) = S (p + S a)) -> exists bcf_value_lucas_convolution_shift_upper_index_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_upper_index_table_zero_row_entry. bcf_height_lucas_convolution_shift_upper_index_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_upper_index_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_upper_index_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_upper_index_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_upper_index_table = bcf_quotient_lucas_convolution_shift_upper_index_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_upper_index_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_upper_index_table) + (bcf_value_lucas_convolution_shift_upper_index_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_upper_index_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_upper_index_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_upper_index_table_zero_row. bcf_index_lucas_convolution_shift_upper_index_table_zero_row = S bcf_predecessor_lucas_convolution_shift_upper_index_table_zero_row /\ bcf_value_lucas_convolution_shift_upper_index_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_upper_index_table bcf_previous_code_lucas_convolution_shift_upper_index_table bcf_previous_scale_lucas_convolution_shift_upper_index_table. bcf_row_index_lucas_convolution_shift_upper_index_table = S bcf_predecessor_lucas_convolution_shift_upper_index_table /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_table_decoded_previous_code. bcf_height_lucas_convolution_shift_upper_index_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_upper_index_table) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_index_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_upper_index_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_index) + (bcf_previous_code_lucas_convolution_shift_upper_index_table))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_upper_index_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_upper_index_table) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_index_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_upper_index_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_index) + (bcf_previous_scale_lucas_convolution_shift_upper_index_table))) /\ (forall bcf_index_lucas_convolution_shift_upper_index_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_upper_index_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_upper_index_table_row_step_bound + S (bcf_index_lucas_convolution_shift_upper_index_table_row_step) = S (p + S a)) -> exists bcf_value_lucas_convolution_shift_upper_index_table_row_step. ((((exists bcf_height_lucas_convolution_shift_upper_index_table_row_step_entry. bcf_height_lucas_convolution_shift_upper_index_table_row_step_entry + S (bcf_value_lucas_convolution_shift_upper_index_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_upper_index_table_row_step)) * bcf_row_scale_lucas_convolution_shift_upper_index_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_row_step_entry. bcf_row_code_lucas_convolution_shift_upper_index_table = bcf_quotient_lucas_convolution_shift_upper_index_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_upper_index_table_row_step)) * bcf_row_scale_lucas_convolution_shift_upper_index_table) + (bcf_value_lucas_convolution_shift_upper_index_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_upper_index_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_upper_index_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_upper_index_table_row_step bcf_left_lucas_convolution_shift_upper_index_table_row_step bcf_right_lucas_convolution_shift_upper_index_table_row_step. bcf_index_lucas_convolution_shift_upper_index_table_row_step = S bcf_predecessor_lucas_convolution_shift_upper_index_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_table_row_step_previous_left. bcf_height_lucas_convolution_shift_upper_index_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_upper_index_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_index_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_upper_index_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_upper_index_table = bcf_quotient_lucas_convolution_shift_upper_index_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_upper_index_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_upper_index_table) + (bcf_left_lucas_convolution_shift_upper_index_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_table_row_step_previous_right. bcf_height_lucas_convolution_shift_upper_index_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_upper_index_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_upper_index_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_upper_index_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_upper_index_table = bcf_quotient_lucas_convolution_shift_upper_index_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_upper_index_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_upper_index_table) + (bcf_right_lucas_convolution_shift_upper_index_table_row_step))) /\ bcf_value_lucas_convolution_shift_upper_index_table_row_step = bcf_left_lucas_convolution_shift_upper_index_table_row_step + bcf_right_lucas_convolution_shift_upper_index_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_decoded_row_code. bcf_height_lucas_convolution_shift_upper_index_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_upper_index) = S ((S (p + S a)) * bcf_row_code_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_decoded_row_code * S ((S (p + S a)) * bcf_row_code_scale_lucas_convolution_shift_upper_index) + (bcf_row_code_lucas_convolution_shift_upper_index))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_index_decoded_row_scale. bcf_height_lucas_convolution_shift_upper_index_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_upper_index) = S ((S (p + S a)) * bcf_row_scale_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_decoded_row_scale * S ((S (p + S a)) * bcf_row_scale_scale_lucas_convolution_shift_upper_index) + (bcf_row_scale_lucas_convolution_shift_upper_index))) /\ (((exists bcf_height_lucas_convolution_shift_upper_index_decoded_value. bcf_height_lucas_convolution_shift_upper_index_decoded_value + S (C) = S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_upper_index)) /\ exists bcf_quotient_lucas_convolution_shift_upper_index_decoded_value. bcf_row_code_lucas_convolution_shift_upper_index = bcf_quotient_lucas_convolution_shift_upper_index_decoded_value * S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_upper_index) + (C))))))))
  132. 0132specialize lucas_choose_lower_eq_transport (p + S a)
  133. 0133specialize lucas_choose_lower_eq_transport b
  134. 0134specialize lucas_choose_lower_eq_transport (S x)
  135. 0135specialize lucas_choose_lower_eq_transport C
  136. 0136apply lucas_choose_lower_eq_transport
  137. 0137exact hsuccessor_witness
  138. 0138exact hupper
  139. 0139have hupper_normal : Choose(S (p + a),S x,C)
    Exact native replay linehave hupper_normal : ((exists bcf_lt_gap_lucas_convolution_shift_upper_normal_out_of_range. bcf_lt_gap_lucas_convolution_shift_upper_normal_out_of_range + S (S (p + a)) = S x) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_upper_normal_in_range. bcf_le_gap_lucas_convolution_shift_upper_normal_in_range + (S x) = S (p + a)) /\ (exists bcf_row_code_code_lucas_convolution_shift_upper_normal bcf_row_code_scale_lucas_convolution_shift_upper_normal bcf_row_scale_code_lucas_convolution_shift_upper_normal bcf_row_scale_scale_lucas_convolution_shift_upper_normal bcf_row_code_lucas_convolution_shift_upper_normal bcf_row_scale_lucas_convolution_shift_upper_normal. ((forall bcf_row_index_lucas_convolution_shift_upper_normal_table. (exists bcf_lt_gap_lucas_convolution_shift_upper_normal_table_row_bound. bcf_lt_gap_lucas_convolution_shift_upper_normal_table_row_bound + S (bcf_row_index_lucas_convolution_shift_upper_normal_table) = S (S (p + a))) -> exists bcf_row_code_lucas_convolution_shift_upper_normal_table bcf_row_scale_lucas_convolution_shift_upper_normal_table. ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_decoded_row_code. bcf_height_lucas_convolution_shift_upper_normal_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_upper_normal_table) = S ((S (bcf_row_index_lucas_convolution_shift_upper_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_upper_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_normal) + (bcf_row_code_lucas_convolution_shift_upper_normal_table))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_decoded_row_scale. bcf_height_lucas_convolution_shift_upper_normal_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_upper_normal_table) = S ((S (bcf_row_index_lucas_convolution_shift_upper_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_upper_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_normal) + (bcf_row_scale_lucas_convolution_shift_upper_normal_table))) /\ ((bcf_row_index_lucas_convolution_shift_upper_normal_table = 0 /\ (forall bcf_index_lucas_convolution_shift_upper_normal_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_upper_normal_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_upper_normal_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_upper_normal_table_zero_row) = S (S (p + a))) -> exists bcf_value_lucas_convolution_shift_upper_normal_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_zero_row_entry. bcf_height_lucas_convolution_shift_upper_normal_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_upper_normal_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_upper_normal_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_upper_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_upper_normal_table = bcf_quotient_lucas_convolution_shift_upper_normal_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_upper_normal_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_upper_normal_table) + (bcf_value_lucas_convolution_shift_upper_normal_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_upper_normal_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_upper_normal_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_upper_normal_table_zero_row. bcf_index_lucas_convolution_shift_upper_normal_table_zero_row = S bcf_predecessor_lucas_convolution_shift_upper_normal_table_zero_row /\ bcf_value_lucas_convolution_shift_upper_normal_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_upper_normal_table bcf_previous_code_lucas_convolution_shift_upper_normal_table bcf_previous_scale_lucas_convolution_shift_upper_normal_table. bcf_row_index_lucas_convolution_shift_upper_normal_table = S bcf_predecessor_lucas_convolution_shift_upper_normal_table /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_decoded_previous_code. bcf_height_lucas_convolution_shift_upper_normal_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_upper_normal_table) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_upper_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_upper_normal) + (bcf_previous_code_lucas_convolution_shift_upper_normal_table))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_upper_normal_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_upper_normal_table) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_upper_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_upper_normal) + (bcf_previous_scale_lucas_convolution_shift_upper_normal_table))) /\ (forall bcf_index_lucas_convolution_shift_upper_normal_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_upper_normal_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_upper_normal_table_row_step_bound + S (bcf_index_lucas_convolution_shift_upper_normal_table_row_step) = S (S (p + a))) -> exists bcf_value_lucas_convolution_shift_upper_normal_table_row_step. ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_row_step_entry. bcf_height_lucas_convolution_shift_upper_normal_table_row_step_entry + S (bcf_value_lucas_convolution_shift_upper_normal_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_upper_normal_table_row_step)) * bcf_row_scale_lucas_convolution_shift_upper_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_row_step_entry. bcf_row_code_lucas_convolution_shift_upper_normal_table = bcf_quotient_lucas_convolution_shift_upper_normal_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_upper_normal_table_row_step)) * bcf_row_scale_lucas_convolution_shift_upper_normal_table) + (bcf_value_lucas_convolution_shift_upper_normal_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_upper_normal_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_upper_normal_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_upper_normal_table_row_step bcf_left_lucas_convolution_shift_upper_normal_table_row_step bcf_right_lucas_convolution_shift_upper_normal_table_row_step. bcf_index_lucas_convolution_shift_upper_normal_table_row_step = S bcf_predecessor_lucas_convolution_shift_upper_normal_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_row_step_previous_left. bcf_height_lucas_convolution_shift_upper_normal_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_upper_normal_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_upper_normal_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_upper_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_upper_normal_table = bcf_quotient_lucas_convolution_shift_upper_normal_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_upper_normal_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_upper_normal_table) + (bcf_left_lucas_convolution_shift_upper_normal_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_table_row_step_previous_right. bcf_height_lucas_convolution_shift_upper_normal_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_upper_normal_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_upper_normal_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_upper_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_upper_normal_table = bcf_quotient_lucas_convolution_shift_upper_normal_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_upper_normal_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_upper_normal_table) + (bcf_right_lucas_convolution_shift_upper_normal_table_row_step))) /\ bcf_value_lucas_convolution_shift_upper_normal_table_row_step = bcf_left_lucas_convolution_shift_upper_normal_table_row_step + bcf_right_lucas_convolution_shift_upper_normal_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_decoded_row_code. bcf_height_lucas_convolution_shift_upper_normal_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_upper_normal) = S ((S (S (p + a))) * bcf_row_code_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_decoded_row_code * S ((S (S (p + a))) * bcf_row_code_scale_lucas_convolution_shift_upper_normal) + (bcf_row_code_lucas_convolution_shift_upper_normal))) /\ ((((exists bcf_height_lucas_convolution_shift_upper_normal_decoded_row_scale. bcf_height_lucas_convolution_shift_upper_normal_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_upper_normal) = S ((S (S (p + a))) * bcf_row_scale_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_decoded_row_scale * S ((S (S (p + a))) * bcf_row_scale_scale_lucas_convolution_shift_upper_normal) + (bcf_row_scale_lucas_convolution_shift_upper_normal))) /\ (((exists bcf_height_lucas_convolution_shift_upper_normal_decoded_value. bcf_height_lucas_convolution_shift_upper_normal_decoded_value + S (C) = S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_upper_normal)) /\ exists bcf_quotient_lucas_convolution_shift_upper_normal_decoded_value. bcf_row_code_lucas_convolution_shift_upper_normal = bcf_quotient_lucas_convolution_shift_upper_normal_decoded_value * S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_upper_normal) + (C))))))))
  140. 0140specialize choose_upper_eq_transport (p + S a)
  141. 0141specialize choose_upper_eq_transport (S (p + a))
  142. 0142specialize choose_upper_eq_transport (S x)
  143. 0143specialize choose_upper_eq_transport C
  144. 0144apply choose_upper_eq_transport
  145. 0145apply PA4
  146. 0146exact hupper_index
  147. 0147have hlower_normal : Choose(S a,S x,D)
    Exact native replay linehave hlower_normal : ((exists bcf_lt_gap_lucas_convolution_shift_lower_normal_out_of_range. bcf_lt_gap_lucas_convolution_shift_lower_normal_out_of_range + S (S a) = S x) /\ D = 0) \/ ((exists bcf_le_gap_lucas_convolution_shift_lower_normal_in_range. bcf_le_gap_lucas_convolution_shift_lower_normal_in_range + (S x) = S a) /\ (exists bcf_row_code_code_lucas_convolution_shift_lower_normal bcf_row_code_scale_lucas_convolution_shift_lower_normal bcf_row_scale_code_lucas_convolution_shift_lower_normal bcf_row_scale_scale_lucas_convolution_shift_lower_normal bcf_row_code_lucas_convolution_shift_lower_normal bcf_row_scale_lucas_convolution_shift_lower_normal. ((forall bcf_row_index_lucas_convolution_shift_lower_normal_table. (exists bcf_lt_gap_lucas_convolution_shift_lower_normal_table_row_bound. bcf_lt_gap_lucas_convolution_shift_lower_normal_table_row_bound + S (bcf_row_index_lucas_convolution_shift_lower_normal_table) = S (S a)) -> exists bcf_row_code_lucas_convolution_shift_lower_normal_table bcf_row_scale_lucas_convolution_shift_lower_normal_table. ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_decoded_row_code. bcf_height_lucas_convolution_shift_lower_normal_table_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_lower_normal_table) = S ((S (bcf_row_index_lucas_convolution_shift_lower_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_shift_lower_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_lower_normal) + (bcf_row_code_lucas_convolution_shift_lower_normal_table))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_decoded_row_scale. bcf_height_lucas_convolution_shift_lower_normal_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_lower_normal_table) = S ((S (bcf_row_index_lucas_convolution_shift_lower_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_shift_lower_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower_normal) + (bcf_row_scale_lucas_convolution_shift_lower_normal_table))) /\ ((bcf_row_index_lucas_convolution_shift_lower_normal_table = 0 /\ (forall bcf_index_lucas_convolution_shift_lower_normal_table_zero_row. (exists bcf_lt_gap_lucas_convolution_shift_lower_normal_table_zero_row_bound. bcf_lt_gap_lucas_convolution_shift_lower_normal_table_zero_row_bound + S (bcf_index_lucas_convolution_shift_lower_normal_table_zero_row) = S (S a)) -> exists bcf_value_lucas_convolution_shift_lower_normal_table_zero_row. ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_zero_row_entry. bcf_height_lucas_convolution_shift_lower_normal_table_zero_row_entry + S (bcf_value_lucas_convolution_shift_lower_normal_table_zero_row) = S ((S (bcf_index_lucas_convolution_shift_lower_normal_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_lower_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_zero_row_entry. bcf_row_code_lucas_convolution_shift_lower_normal_table = bcf_quotient_lucas_convolution_shift_lower_normal_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_shift_lower_normal_table_zero_row)) * bcf_row_scale_lucas_convolution_shift_lower_normal_table) + (bcf_value_lucas_convolution_shift_lower_normal_table_zero_row))) /\ ((bcf_index_lucas_convolution_shift_lower_normal_table_zero_row = 0 /\ bcf_value_lucas_convolution_shift_lower_normal_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_shift_lower_normal_table_zero_row. bcf_index_lucas_convolution_shift_lower_normal_table_zero_row = S bcf_predecessor_lucas_convolution_shift_lower_normal_table_zero_row /\ bcf_value_lucas_convolution_shift_lower_normal_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_shift_lower_normal_table bcf_previous_code_lucas_convolution_shift_lower_normal_table bcf_previous_scale_lucas_convolution_shift_lower_normal_table. bcf_row_index_lucas_convolution_shift_lower_normal_table = S bcf_predecessor_lucas_convolution_shift_lower_normal_table /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_decoded_previous_code. bcf_height_lucas_convolution_shift_lower_normal_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_shift_lower_normal_table) = S ((S (bcf_predecessor_lucas_convolution_shift_lower_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_shift_lower_normal_table)) * bcf_row_code_scale_lucas_convolution_shift_lower_normal) + (bcf_previous_code_lucas_convolution_shift_lower_normal_table))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_decoded_previous_scale. bcf_height_lucas_convolution_shift_lower_normal_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_shift_lower_normal_table) = S ((S (bcf_predecessor_lucas_convolution_shift_lower_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_shift_lower_normal_table)) * bcf_row_scale_scale_lucas_convolution_shift_lower_normal) + (bcf_previous_scale_lucas_convolution_shift_lower_normal_table))) /\ (forall bcf_index_lucas_convolution_shift_lower_normal_table_row_step. (exists bcf_lt_gap_lucas_convolution_shift_lower_normal_table_row_step_bound. bcf_lt_gap_lucas_convolution_shift_lower_normal_table_row_step_bound + S (bcf_index_lucas_convolution_shift_lower_normal_table_row_step) = S (S a)) -> exists bcf_value_lucas_convolution_shift_lower_normal_table_row_step. ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_row_step_entry. bcf_height_lucas_convolution_shift_lower_normal_table_row_step_entry + S (bcf_value_lucas_convolution_shift_lower_normal_table_row_step) = S ((S (bcf_index_lucas_convolution_shift_lower_normal_table_row_step)) * bcf_row_scale_lucas_convolution_shift_lower_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_row_step_entry. bcf_row_code_lucas_convolution_shift_lower_normal_table = bcf_quotient_lucas_convolution_shift_lower_normal_table_row_step_entry * S ((S (bcf_index_lucas_convolution_shift_lower_normal_table_row_step)) * bcf_row_scale_lucas_convolution_shift_lower_normal_table) + (bcf_value_lucas_convolution_shift_lower_normal_table_row_step))) /\ ((bcf_index_lucas_convolution_shift_lower_normal_table_row_step = 0 /\ bcf_value_lucas_convolution_shift_lower_normal_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_shift_lower_normal_table_row_step bcf_left_lucas_convolution_shift_lower_normal_table_row_step bcf_right_lucas_convolution_shift_lower_normal_table_row_step. bcf_index_lucas_convolution_shift_lower_normal_table_row_step = S bcf_predecessor_lucas_convolution_shift_lower_normal_table_row_step /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_row_step_previous_left. bcf_height_lucas_convolution_shift_lower_normal_table_row_step_previous_left + S (bcf_left_lucas_convolution_shift_lower_normal_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_shift_lower_normal_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_lower_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_row_step_previous_left. bcf_previous_code_lucas_convolution_shift_lower_normal_table = bcf_quotient_lucas_convolution_shift_lower_normal_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_shift_lower_normal_table_row_step)) * bcf_previous_scale_lucas_convolution_shift_lower_normal_table) + (bcf_left_lucas_convolution_shift_lower_normal_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_table_row_step_previous_right. bcf_height_lucas_convolution_shift_lower_normal_table_row_step_previous_right + S (bcf_right_lucas_convolution_shift_lower_normal_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_shift_lower_normal_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_lower_normal_table)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_table_row_step_previous_right. bcf_previous_code_lucas_convolution_shift_lower_normal_table = bcf_quotient_lucas_convolution_shift_lower_normal_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_shift_lower_normal_table_row_step))) * bcf_previous_scale_lucas_convolution_shift_lower_normal_table) + (bcf_right_lucas_convolution_shift_lower_normal_table_row_step))) /\ bcf_value_lucas_convolution_shift_lower_normal_table_row_step = bcf_left_lucas_convolution_shift_lower_normal_table_row_step + bcf_right_lucas_convolution_shift_lower_normal_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_decoded_row_code. bcf_height_lucas_convolution_shift_lower_normal_decoded_row_code + S (bcf_row_code_lucas_convolution_shift_lower_normal) = S ((S (S a)) * bcf_row_code_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_decoded_row_code. bcf_row_code_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_decoded_row_code * S ((S (S a)) * bcf_row_code_scale_lucas_convolution_shift_lower_normal) + (bcf_row_code_lucas_convolution_shift_lower_normal))) /\ ((((exists bcf_height_lucas_convolution_shift_lower_normal_decoded_row_scale. bcf_height_lucas_convolution_shift_lower_normal_decoded_row_scale + S (bcf_row_scale_lucas_convolution_shift_lower_normal) = S ((S (S a)) * bcf_row_scale_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_decoded_row_scale. bcf_row_scale_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_decoded_row_scale * S ((S (S a)) * bcf_row_scale_scale_lucas_convolution_shift_lower_normal) + (bcf_row_scale_lucas_convolution_shift_lower_normal))) /\ (((exists bcf_height_lucas_convolution_shift_lower_normal_decoded_value. bcf_height_lucas_convolution_shift_lower_normal_decoded_value + S (D) = S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_lower_normal)) /\ exists bcf_quotient_lucas_convolution_shift_lower_normal_decoded_value. bcf_row_code_lucas_convolution_shift_lower_normal = bcf_quotient_lucas_convolution_shift_lower_normal_decoded_value * S ((S (S x)) * bcf_row_scale_lucas_convolution_shift_lower_normal) + (D))))))))
  148. 0148specialize lucas_choose_lower_eq_transport (S a)
  149. 0149specialize lucas_choose_lower_eq_transport b
  150. 0150specialize lucas_choose_lower_eq_transport (S x)
  151. 0151specialize lucas_choose_lower_eq_transport D
  152. 0152apply lucas_choose_lower_eq_transport
  153. 0153exact hsuccessor_witness
  154. 0154exact hlower
  155. 0155have hlower_sum : D = x3 + x4
  156. 0156specialize choose_succ_succ a
  157. 0157specialize choose_succ_succ x
  158. 0158specialize choose_succ_succ x3
  159. 0159specialize choose_succ_succ x4
  160. 0160specialize choose_succ_succ D
  161. 0161apply choose_succ_succ
  162. 0162exact hleft_lower_witness
  163. 0163exact hright_lower_witness
  164. 0164exact hlower_normal
  165. 0165rewrite hlower_sum
  166. 0166specialize lucas_pascal_congruence_step p
  167. 0167specialize lucas_pascal_congruence_step (p + a)
  168. 0168specialize lucas_pascal_congruence_step x
  169. 0169specialize lucas_pascal_congruence_step x1
  170. 0170specialize lucas_pascal_congruence_step x2
  171. 0171specialize lucas_pascal_congruence_step C
  172. 0172specialize lucas_pascal_congruence_step x3
  173. 0173specialize lucas_pascal_congruence_step x4
  174. 0174apply lucas_pascal_congruence_step
  175. 0175exact hleft_upper_witness
  176. 0176exact hright_upper_witness
  177. 0177exact hupper_normal
  178. 0178exact hleft_mod
  179. 0179exact hright_mod