BT00W3 · Bertrand theorem

pow_block_bound_from_total

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

A supplied power bound remains true after a common block multiplier.

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

∀ a. ∀ b. ∀ d. ∀ e. ∀ m. ∀ x. ∀ y. ∀ X. ∀ Y. (∀ z. ∀ n. ∃ k. Pow(z,n,k)) → Pow(a,d,x)Pow(b,e,y)Le(x,y)Pow(a,d · m,X)Pow(b,e · m,Y)Le(X,Y)

Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.

Definitions used by this theorem

In the theorem statement

7 occurrences

In local proof propositions

3 occurrences

Exact expanded native-PA statement
forall a b d e m x y X Y. (forall bpt_a_hj32_block bpt_e_hj32_block. exists bpt_x_hj32_block. (exists ff_b_bpt_value_hj32_block ff_c_bpt_value_hj32_block. ((forall ff_i_bpt_value_hj32_block_repeat. (exists ff_lt_bpt_value_hj32_block_repeat_bound. ff_lt_bpt_value_hj32_block_repeat_bound + S ff_i_bpt_value_hj32_block_repeat = bpt_e_hj32_block) -> (((exists ff_h_bpt_value_hj32_block_repeat_decoded. ff_h_bpt_value_hj32_block_repeat_decoded + S (bpt_a_hj32_block) = S ((S (ff_i_bpt_value_hj32_block_repeat)) * ff_c_bpt_value_hj32_block)) /\ exists ff_q_bpt_value_hj32_block_repeat_decoded. ff_b_bpt_value_hj32_block = ff_q_bpt_value_hj32_block_repeat_decoded * S ((S (ff_i_bpt_value_hj32_block_repeat)) * ff_c_bpt_value_hj32_block) + (bpt_a_hj32_block)))) /\ (exists ff_u_bpt_value_hj32_block_product ff_v_bpt_value_hj32_block_product. ((((exists ff_h_bpt_value_hj32_block_product_start. ff_h_bpt_value_hj32_block_product_start + S (1) = S ((S (0)) * ff_v_bpt_value_hj32_block_product)) /\ exists ff_q_bpt_value_hj32_block_product_start. ff_u_bpt_value_hj32_block_product = ff_q_bpt_value_hj32_block_product_start * S ((S (0)) * ff_v_bpt_value_hj32_block_product) + (1))) /\ ((((exists ff_h_bpt_value_hj32_block_product_terminal. ff_h_bpt_value_hj32_block_product_terminal + S (bpt_x_hj32_block) = S ((S (bpt_e_hj32_block)) * ff_v_bpt_value_hj32_block_product)) /\ exists ff_q_bpt_value_hj32_block_product_terminal. ff_u_bpt_value_hj32_block_product = ff_q_bpt_value_hj32_block_product_terminal * S ((S (bpt_e_hj32_block)) * ff_v_bpt_value_hj32_block_product) + (bpt_x_hj32_block))) /\ forall ff_i_bpt_value_hj32_block_product. (exists ff_lt_bpt_value_hj32_block_product_bound. ff_lt_bpt_value_hj32_block_product_bound + S ff_i_bpt_value_hj32_block_product = bpt_e_hj32_block) -> exists ff_p_bpt_value_hj32_block_product ff_r_bpt_value_hj32_block_product ff_s_bpt_value_hj32_block_product. ((((exists ff_h_bpt_value_hj32_block_product_factor. ff_h_bpt_value_hj32_block_product_factor + S (ff_p_bpt_value_hj32_block_product) = S ((S (ff_i_bpt_value_hj32_block_product)) * ff_c_bpt_value_hj32_block)) /\ exists ff_q_bpt_value_hj32_block_product_factor. ff_b_bpt_value_hj32_block = ff_q_bpt_value_hj32_block_product_factor * S ((S (ff_i_bpt_value_hj32_block_product)) * ff_c_bpt_value_hj32_block) + (ff_p_bpt_value_hj32_block_product))) /\ ((((exists ff_h_bpt_value_hj32_block_product_partial. ff_h_bpt_value_hj32_block_product_partial + S (ff_r_bpt_value_hj32_block_product) = S ((S (ff_i_bpt_value_hj32_block_product)) * ff_v_bpt_value_hj32_block_product)) /\ exists ff_q_bpt_value_hj32_block_product_partial. ff_u_bpt_value_hj32_block_product = ff_q_bpt_value_hj32_block_product_partial * S ((S (ff_i_bpt_value_hj32_block_product)) * ff_v_bpt_value_hj32_block_product) + (ff_r_bpt_value_hj32_block_product))) /\ ((((exists ff_h_bpt_value_hj32_block_product_successor. ff_h_bpt_value_hj32_block_product_successor + S (ff_s_bpt_value_hj32_block_product) = S ((S (S ff_i_bpt_value_hj32_block_product)) * ff_v_bpt_value_hj32_block_product)) /\ exists ff_q_bpt_value_hj32_block_product_successor. ff_u_bpt_value_hj32_block_product = ff_q_bpt_value_hj32_block_product_successor * S ((S (S ff_i_bpt_value_hj32_block_product)) * ff_v_bpt_value_hj32_block_product) + (ff_s_bpt_value_hj32_block_product))) /\ ff_s_bpt_value_hj32_block_product = ff_r_bpt_value_hj32_block_product * ff_p_bpt_value_hj32_block_product))))))))) -> (exists pa_b_hj32_block_left_seed pa_c_hj32_block_left_seed. ((forall pa_i_hj32_block_left_seed_repeat. (exists pa_lt_hj32_block_left_seed_repeat_bound. pa_lt_hj32_block_left_seed_repeat_bound + S pa_i_hj32_block_left_seed_repeat = d) -> (((exists pa_h_hj32_block_left_seed_repeat_decoded. pa_h_hj32_block_left_seed_repeat_decoded + S (a) = S ((S (pa_i_hj32_block_left_seed_repeat)) * pa_c_hj32_block_left_seed)) /\ exists pa_q_hj32_block_left_seed_repeat_decoded. pa_b_hj32_block_left_seed = pa_q_hj32_block_left_seed_repeat_decoded * S ((S (pa_i_hj32_block_left_seed_repeat)) * pa_c_hj32_block_left_seed) + (a)))) /\ (exists pa_u_hj32_block_left_seed_product pa_v_hj32_block_left_seed_product. ((((exists pa_h_hj32_block_left_seed_product_start. pa_h_hj32_block_left_seed_product_start + S (1) = S ((S (0)) * pa_v_hj32_block_left_seed_product)) /\ exists pa_q_hj32_block_left_seed_product_start. pa_u_hj32_block_left_seed_product = pa_q_hj32_block_left_seed_product_start * S ((S (0)) * pa_v_hj32_block_left_seed_product) + (1))) /\ ((((exists pa_h_hj32_block_left_seed_product_terminal. pa_h_hj32_block_left_seed_product_terminal + S (x) = S ((S (d)) * pa_v_hj32_block_left_seed_product)) /\ exists pa_q_hj32_block_left_seed_product_terminal. pa_u_hj32_block_left_seed_product = pa_q_hj32_block_left_seed_product_terminal * S ((S (d)) * pa_v_hj32_block_left_seed_product) + (x))) /\ forall pa_i_hj32_block_left_seed_product. (exists pa_lt_hj32_block_left_seed_product_bound. pa_lt_hj32_block_left_seed_product_bound + S pa_i_hj32_block_left_seed_product = d) -> exists pa_p_hj32_block_left_seed_product pa_r_hj32_block_left_seed_product pa_s_hj32_block_left_seed_product. ((((exists pa_h_hj32_block_left_seed_product_factor. pa_h_hj32_block_left_seed_product_factor + S (pa_p_hj32_block_left_seed_product) = S ((S (pa_i_hj32_block_left_seed_product)) * pa_c_hj32_block_left_seed)) /\ exists pa_q_hj32_block_left_seed_product_factor. pa_b_hj32_block_left_seed = pa_q_hj32_block_left_seed_product_factor * S ((S (pa_i_hj32_block_left_seed_product)) * pa_c_hj32_block_left_seed) + (pa_p_hj32_block_left_seed_product))) /\ ((((exists pa_h_hj32_block_left_seed_product_partial. pa_h_hj32_block_left_seed_product_partial + S (pa_r_hj32_block_left_seed_product) = S ((S (pa_i_hj32_block_left_seed_product)) * pa_v_hj32_block_left_seed_product)) /\ exists pa_q_hj32_block_left_seed_product_partial. pa_u_hj32_block_left_seed_product = pa_q_hj32_block_left_seed_product_partial * S ((S (pa_i_hj32_block_left_seed_product)) * pa_v_hj32_block_left_seed_product) + (pa_r_hj32_block_left_seed_product))) /\ ((((exists pa_h_hj32_block_left_seed_product_successor. pa_h_hj32_block_left_seed_product_successor + S (pa_s_hj32_block_left_seed_product) = S ((S (S pa_i_hj32_block_left_seed_product)) * pa_v_hj32_block_left_seed_product)) /\ exists pa_q_hj32_block_left_seed_product_successor. pa_u_hj32_block_left_seed_product = pa_q_hj32_block_left_seed_product_successor * S ((S (S pa_i_hj32_block_left_seed_product)) * pa_v_hj32_block_left_seed_product) + (pa_s_hj32_block_left_seed_product))) /\ pa_s_hj32_block_left_seed_product = pa_r_hj32_block_left_seed_product * pa_p_hj32_block_left_seed_product)))))))) -> (exists pa_b_hj32_block_right_seed pa_c_hj32_block_right_seed. ((forall pa_i_hj32_block_right_seed_repeat. (exists pa_lt_hj32_block_right_seed_repeat_bound. pa_lt_hj32_block_right_seed_repeat_bound + S pa_i_hj32_block_right_seed_repeat = e) -> (((exists pa_h_hj32_block_right_seed_repeat_decoded. pa_h_hj32_block_right_seed_repeat_decoded + S (b) = S ((S (pa_i_hj32_block_right_seed_repeat)) * pa_c_hj32_block_right_seed)) /\ exists pa_q_hj32_block_right_seed_repeat_decoded. pa_b_hj32_block_right_seed = pa_q_hj32_block_right_seed_repeat_decoded * S ((S (pa_i_hj32_block_right_seed_repeat)) * pa_c_hj32_block_right_seed) + (b)))) /\ (exists pa_u_hj32_block_right_seed_product pa_v_hj32_block_right_seed_product. ((((exists pa_h_hj32_block_right_seed_product_start. pa_h_hj32_block_right_seed_product_start + S (1) = S ((S (0)) * pa_v_hj32_block_right_seed_product)) /\ exists pa_q_hj32_block_right_seed_product_start. pa_u_hj32_block_right_seed_product = pa_q_hj32_block_right_seed_product_start * S ((S (0)) * pa_v_hj32_block_right_seed_product) + (1))) /\ ((((exists pa_h_hj32_block_right_seed_product_terminal. pa_h_hj32_block_right_seed_product_terminal + S (y) = S ((S (e)) * pa_v_hj32_block_right_seed_product)) /\ exists pa_q_hj32_block_right_seed_product_terminal. pa_u_hj32_block_right_seed_product = pa_q_hj32_block_right_seed_product_terminal * S ((S (e)) * pa_v_hj32_block_right_seed_product) + (y))) /\ forall pa_i_hj32_block_right_seed_product. (exists pa_lt_hj32_block_right_seed_product_bound. pa_lt_hj32_block_right_seed_product_bound + S pa_i_hj32_block_right_seed_product = e) -> exists pa_p_hj32_block_right_seed_product pa_r_hj32_block_right_seed_product pa_s_hj32_block_right_seed_product. ((((exists pa_h_hj32_block_right_seed_product_factor. pa_h_hj32_block_right_seed_product_factor + S (pa_p_hj32_block_right_seed_product) = S ((S (pa_i_hj32_block_right_seed_product)) * pa_c_hj32_block_right_seed)) /\ exists pa_q_hj32_block_right_seed_product_factor. pa_b_hj32_block_right_seed = pa_q_hj32_block_right_seed_product_factor * S ((S (pa_i_hj32_block_right_seed_product)) * pa_c_hj32_block_right_seed) + (pa_p_hj32_block_right_seed_product))) /\ ((((exists pa_h_hj32_block_right_seed_product_partial. pa_h_hj32_block_right_seed_product_partial + S (pa_r_hj32_block_right_seed_product) = S ((S (pa_i_hj32_block_right_seed_product)) * pa_v_hj32_block_right_seed_product)) /\ exists pa_q_hj32_block_right_seed_product_partial. pa_u_hj32_block_right_seed_product = pa_q_hj32_block_right_seed_product_partial * S ((S (pa_i_hj32_block_right_seed_product)) * pa_v_hj32_block_right_seed_product) + (pa_r_hj32_block_right_seed_product))) /\ ((((exists pa_h_hj32_block_right_seed_product_successor. pa_h_hj32_block_right_seed_product_successor + S (pa_s_hj32_block_right_seed_product) = S ((S (S pa_i_hj32_block_right_seed_product)) * pa_v_hj32_block_right_seed_product)) /\ exists pa_q_hj32_block_right_seed_product_successor. pa_u_hj32_block_right_seed_product = pa_q_hj32_block_right_seed_product_successor * S ((S (S pa_i_hj32_block_right_seed_product)) * pa_v_hj32_block_right_seed_product) + (pa_s_hj32_block_right_seed_product))) /\ pa_s_hj32_block_right_seed_product = pa_r_hj32_block_right_seed_product * pa_p_hj32_block_right_seed_product)))))))) -> (exists bqb_le_gap_hj32_block_seed_bound. bqb_le_gap_hj32_block_seed_bound + (x) = (y)) -> (exists pa_b_hj32_block_left pa_c_hj32_block_left. ((forall pa_i_hj32_block_left_repeat. (exists pa_lt_hj32_block_left_repeat_bound. pa_lt_hj32_block_left_repeat_bound + S pa_i_hj32_block_left_repeat = d * m) -> (((exists pa_h_hj32_block_left_repeat_decoded. pa_h_hj32_block_left_repeat_decoded + S (a) = S ((S (pa_i_hj32_block_left_repeat)) * pa_c_hj32_block_left)) /\ exists pa_q_hj32_block_left_repeat_decoded. pa_b_hj32_block_left = pa_q_hj32_block_left_repeat_decoded * S ((S (pa_i_hj32_block_left_repeat)) * pa_c_hj32_block_left) + (a)))) /\ (exists pa_u_hj32_block_left_product pa_v_hj32_block_left_product. ((((exists pa_h_hj32_block_left_product_start. pa_h_hj32_block_left_product_start + S (1) = S ((S (0)) * pa_v_hj32_block_left_product)) /\ exists pa_q_hj32_block_left_product_start. pa_u_hj32_block_left_product = pa_q_hj32_block_left_product_start * S ((S (0)) * pa_v_hj32_block_left_product) + (1))) /\ ((((exists pa_h_hj32_block_left_product_terminal. pa_h_hj32_block_left_product_terminal + S (X) = S ((S (d * m)) * pa_v_hj32_block_left_product)) /\ exists pa_q_hj32_block_left_product_terminal. pa_u_hj32_block_left_product = pa_q_hj32_block_left_product_terminal * S ((S (d * m)) * pa_v_hj32_block_left_product) + (X))) /\ forall pa_i_hj32_block_left_product. (exists pa_lt_hj32_block_left_product_bound. pa_lt_hj32_block_left_product_bound + S pa_i_hj32_block_left_product = d * m) -> exists pa_p_hj32_block_left_product pa_r_hj32_block_left_product pa_s_hj32_block_left_product. ((((exists pa_h_hj32_block_left_product_factor. pa_h_hj32_block_left_product_factor + S (pa_p_hj32_block_left_product) = S ((S (pa_i_hj32_block_left_product)) * pa_c_hj32_block_left)) /\ exists pa_q_hj32_block_left_product_factor. pa_b_hj32_block_left = pa_q_hj32_block_left_product_factor * S ((S (pa_i_hj32_block_left_product)) * pa_c_hj32_block_left) + (pa_p_hj32_block_left_product))) /\ ((((exists pa_h_hj32_block_left_product_partial. pa_h_hj32_block_left_product_partial + S (pa_r_hj32_block_left_product) = S ((S (pa_i_hj32_block_left_product)) * pa_v_hj32_block_left_product)) /\ exists pa_q_hj32_block_left_product_partial. pa_u_hj32_block_left_product = pa_q_hj32_block_left_product_partial * S ((S (pa_i_hj32_block_left_product)) * pa_v_hj32_block_left_product) + (pa_r_hj32_block_left_product))) /\ ((((exists pa_h_hj32_block_left_product_successor. pa_h_hj32_block_left_product_successor + S (pa_s_hj32_block_left_product) = S ((S (S pa_i_hj32_block_left_product)) * pa_v_hj32_block_left_product)) /\ exists pa_q_hj32_block_left_product_successor. pa_u_hj32_block_left_product = pa_q_hj32_block_left_product_successor * S ((S (S pa_i_hj32_block_left_product)) * pa_v_hj32_block_left_product) + (pa_s_hj32_block_left_product))) /\ pa_s_hj32_block_left_product = pa_r_hj32_block_left_product * pa_p_hj32_block_left_product)))))))) -> (exists pa_b_hj32_block_right pa_c_hj32_block_right. ((forall pa_i_hj32_block_right_repeat. (exists pa_lt_hj32_block_right_repeat_bound. pa_lt_hj32_block_right_repeat_bound + S pa_i_hj32_block_right_repeat = e * m) -> (((exists pa_h_hj32_block_right_repeat_decoded. pa_h_hj32_block_right_repeat_decoded + S (b) = S ((S (pa_i_hj32_block_right_repeat)) * pa_c_hj32_block_right)) /\ exists pa_q_hj32_block_right_repeat_decoded. pa_b_hj32_block_right = pa_q_hj32_block_right_repeat_decoded * S ((S (pa_i_hj32_block_right_repeat)) * pa_c_hj32_block_right) + (b)))) /\ (exists pa_u_hj32_block_right_product pa_v_hj32_block_right_product. ((((exists pa_h_hj32_block_right_product_start. pa_h_hj32_block_right_product_start + S (1) = S ((S (0)) * pa_v_hj32_block_right_product)) /\ exists pa_q_hj32_block_right_product_start. pa_u_hj32_block_right_product = pa_q_hj32_block_right_product_start * S ((S (0)) * pa_v_hj32_block_right_product) + (1))) /\ ((((exists pa_h_hj32_block_right_product_terminal. pa_h_hj32_block_right_product_terminal + S (Y) = S ((S (e * m)) * pa_v_hj32_block_right_product)) /\ exists pa_q_hj32_block_right_product_terminal. pa_u_hj32_block_right_product = pa_q_hj32_block_right_product_terminal * S ((S (e * m)) * pa_v_hj32_block_right_product) + (Y))) /\ forall pa_i_hj32_block_right_product. (exists pa_lt_hj32_block_right_product_bound. pa_lt_hj32_block_right_product_bound + S pa_i_hj32_block_right_product = e * m) -> exists pa_p_hj32_block_right_product pa_r_hj32_block_right_product pa_s_hj32_block_right_product. ((((exists pa_h_hj32_block_right_product_factor. pa_h_hj32_block_right_product_factor + S (pa_p_hj32_block_right_product) = S ((S (pa_i_hj32_block_right_product)) * pa_c_hj32_block_right)) /\ exists pa_q_hj32_block_right_product_factor. pa_b_hj32_block_right = pa_q_hj32_block_right_product_factor * S ((S (pa_i_hj32_block_right_product)) * pa_c_hj32_block_right) + (pa_p_hj32_block_right_product))) /\ ((((exists pa_h_hj32_block_right_product_partial. pa_h_hj32_block_right_product_partial + S (pa_r_hj32_block_right_product) = S ((S (pa_i_hj32_block_right_product)) * pa_v_hj32_block_right_product)) /\ exists pa_q_hj32_block_right_product_partial. pa_u_hj32_block_right_product = pa_q_hj32_block_right_product_partial * S ((S (pa_i_hj32_block_right_product)) * pa_v_hj32_block_right_product) + (pa_r_hj32_block_right_product))) /\ ((((exists pa_h_hj32_block_right_product_successor. pa_h_hj32_block_right_product_successor + S (pa_s_hj32_block_right_product) = S ((S (S pa_i_hj32_block_right_product)) * pa_v_hj32_block_right_product)) /\ exists pa_q_hj32_block_right_product_successor. pa_u_hj32_block_right_product = pa_q_hj32_block_right_product_successor * S ((S (S pa_i_hj32_block_right_product)) * pa_v_hj32_block_right_product) + (pa_s_hj32_block_right_product))) /\ pa_s_hj32_block_right_product = pa_r_hj32_block_right_product * pa_p_hj32_block_right_product)))))))) -> (exists bqb_le_gap_hj32_block_result. bqb_le_gap_hj32_block_result + (X) = (Y))

Proof neighborhood

Direct theorem prerequisites

Direct theorem dependents

Definition-aware tactic body

Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.

Read the argument

Proof checkpoints

66 script commands · 15 reading checkpoints · 5 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 (2)
01Fix variables and assumptionsL1–10

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

  1. L1
    intro a
  2. L2
    intro b
  3. L3
    intro d
  4. L4
    intro e
  5. L5
    intro m
  6. L6
    intro x
  7. L7
    intro y
  8. L8
    intro X
  9. L9
    intro Y
  10. L10
    intro htotal
02Fix variables and assumptionsL11–15

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

  1. L11
    intro hx
  2. L12
    intro hy
  3. L13
    intro hxy
  4. L14
    intro hX
  5. L15
    intro hY
03Establish hxmL16–19

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

  1. L16
    have hxm : ∃ q. Pow(x,m,q)Definitions: Pow(x,m,q)Original native command in the exact edition
  2. L17
    specialize htotal x
  3. L18
    specialize htotal m
  4. L19
    exact htotal
04Separate the logical casesL20–20

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

  1. L20
    cases hxm
05Establish hymL21–24

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

  1. L21
    have hym : ∃ q. Pow(y,m,q)Definitions: Pow(y,m,q)Original native command in the exact edition
  2. L22
    specialize htotal y
  3. L23
    specialize htotal m
  4. L24
    exact htotal
06Separate the logical casesL25–25

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

  1. L25
    cases hym
07Establish houterL26–35

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

  1. L26
    have houter : Le(x1,x2)Definitions: Le(x1,x2)Original native command in the exact edition
  2. L27
    specialize pow_base_monotone x
  3. L28
    specialize pow_base_monotone y
  4. L29
    specialize pow_base_monotone m
  5. L30
    specialize pow_base_monotone x1
  6. L31
    specialize pow_base_monotone x2
  7. L32
    apply pow_base_monotone
  8. L33
    exact hxy
  9. L34
    exact hxm_witness
  10. L35
    exact hym_witness
08Establish hleftL36–45

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow mul exp from total.

  1. L36
    have hleft : x1 = X
  2. L37
    specialize pow_mul_exp_from_total a
  3. L38
    specialize pow_mul_exp_from_total d
  4. L39
    specialize pow_mul_exp_from_total m
  5. L40
    specialize pow_mul_exp_from_total (d * m)
  6. L41
    specialize pow_mul_exp_from_total x
  7. L42
    specialize pow_mul_exp_from_total x1
  8. L43
    specialize pow_mul_exp_from_total X
  9. L44
    apply pow_mul_exp_from_total
  10. L45
    exact htotal
09Calculate and transport equalitiesL46–46

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

  1. L46
    refl
10Use earlier factsL47–49

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

  1. L47
    exact hx
  2. L48
    exact hxm_witness
  3. L49
    exact hX
11Establish hrightL50–59

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow mul exp from total.

  1. L50
    have hright : x2 = Y
  2. L51
    specialize pow_mul_exp_from_total b
  3. L52
    specialize pow_mul_exp_from_total e
  4. L53
    specialize pow_mul_exp_from_total m
  5. L54
    specialize pow_mul_exp_from_total (e * m)
  6. L55
    specialize pow_mul_exp_from_total y
  7. L56
    specialize pow_mul_exp_from_total x2
  8. L57
    specialize pow_mul_exp_from_total Y
  9. L58
    apply pow_mul_exp_from_total
  10. L59
    exact htotal
12Calculate and transport equalitiesL60–60

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

  1. L60
    refl
13Use earlier factsL61–63

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

  1. L61
    exact hy
  2. L62
    exact hym_witness
  3. L63
    exact hY
14Calculate and transport equalitiesL64–65

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

  1. L64
    rewrite hleft at houter
  2. L65
    rewrite hright at houter
15Use earlier factsL66–66

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

  1. L66
    exact houter

Library-wide reading audit

Original defined command ledger · 66 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro d
  4. 0004intro e
  5. 0005intro m
  6. 0006intro x
  7. 0007intro y
  8. 0008intro X
  9. 0009intro Y
  10. 0010intro htotal
  11. 0011intro hx
  12. 0012intro hy
  13. 0013intro hxy
  14. 0014intro hX
  15. 0015intro hY
  16. 0016have hxm : ∃ q. Pow(x,m,q)
    Exact native replay linehave hxm : exists q. (exists pa_b_hj32_block_left_outer pa_c_hj32_block_left_outer. ((forall pa_i_hj32_block_left_outer_repeat. (exists pa_lt_hj32_block_left_outer_repeat_bound. pa_lt_hj32_block_left_outer_repeat_bound + S pa_i_hj32_block_left_outer_repeat = m) -> (((exists pa_h_hj32_block_left_outer_repeat_decoded. pa_h_hj32_block_left_outer_repeat_decoded + S (x) = S ((S (pa_i_hj32_block_left_outer_repeat)) * pa_c_hj32_block_left_outer)) /\ exists pa_q_hj32_block_left_outer_repeat_decoded. pa_b_hj32_block_left_outer = pa_q_hj32_block_left_outer_repeat_decoded * S ((S (pa_i_hj32_block_left_outer_repeat)) * pa_c_hj32_block_left_outer) + (x)))) /\ (exists pa_u_hj32_block_left_outer_product pa_v_hj32_block_left_outer_product. ((((exists pa_h_hj32_block_left_outer_product_start. pa_h_hj32_block_left_outer_product_start + S (1) = S ((S (0)) * pa_v_hj32_block_left_outer_product)) /\ exists pa_q_hj32_block_left_outer_product_start. pa_u_hj32_block_left_outer_product = pa_q_hj32_block_left_outer_product_start * S ((S (0)) * pa_v_hj32_block_left_outer_product) + (1))) /\ ((((exists pa_h_hj32_block_left_outer_product_terminal. pa_h_hj32_block_left_outer_product_terminal + S (q) = S ((S (m)) * pa_v_hj32_block_left_outer_product)) /\ exists pa_q_hj32_block_left_outer_product_terminal. pa_u_hj32_block_left_outer_product = pa_q_hj32_block_left_outer_product_terminal * S ((S (m)) * pa_v_hj32_block_left_outer_product) + (q))) /\ forall pa_i_hj32_block_left_outer_product. (exists pa_lt_hj32_block_left_outer_product_bound. pa_lt_hj32_block_left_outer_product_bound + S pa_i_hj32_block_left_outer_product = m) -> exists pa_p_hj32_block_left_outer_product pa_r_hj32_block_left_outer_product pa_s_hj32_block_left_outer_product. ((((exists pa_h_hj32_block_left_outer_product_factor. pa_h_hj32_block_left_outer_product_factor + S (pa_p_hj32_block_left_outer_product) = S ((S (pa_i_hj32_block_left_outer_product)) * pa_c_hj32_block_left_outer)) /\ exists pa_q_hj32_block_left_outer_product_factor. pa_b_hj32_block_left_outer = pa_q_hj32_block_left_outer_product_factor * S ((S (pa_i_hj32_block_left_outer_product)) * pa_c_hj32_block_left_outer) + (pa_p_hj32_block_left_outer_product))) /\ ((((exists pa_h_hj32_block_left_outer_product_partial. pa_h_hj32_block_left_outer_product_partial + S (pa_r_hj32_block_left_outer_product) = S ((S (pa_i_hj32_block_left_outer_product)) * pa_v_hj32_block_left_outer_product)) /\ exists pa_q_hj32_block_left_outer_product_partial. pa_u_hj32_block_left_outer_product = pa_q_hj32_block_left_outer_product_partial * S ((S (pa_i_hj32_block_left_outer_product)) * pa_v_hj32_block_left_outer_product) + (pa_r_hj32_block_left_outer_product))) /\ ((((exists pa_h_hj32_block_left_outer_product_successor. pa_h_hj32_block_left_outer_product_successor + S (pa_s_hj32_block_left_outer_product) = S ((S (S pa_i_hj32_block_left_outer_product)) * pa_v_hj32_block_left_outer_product)) /\ exists pa_q_hj32_block_left_outer_product_successor. pa_u_hj32_block_left_outer_product = pa_q_hj32_block_left_outer_product_successor * S ((S (S pa_i_hj32_block_left_outer_product)) * pa_v_hj32_block_left_outer_product) + (pa_s_hj32_block_left_outer_product))) /\ pa_s_hj32_block_left_outer_product = pa_r_hj32_block_left_outer_product * pa_p_hj32_block_left_outer_product))))))))
  17. 0017specialize htotal x
  18. 0018specialize htotal m
  19. 0019exact htotal
  20. 0020cases hxm
  21. 0021have hym : ∃ q. Pow(y,m,q)
    Exact native replay linehave hym : exists q. (exists pa_b_hj32_block_right_outer pa_c_hj32_block_right_outer. ((forall pa_i_hj32_block_right_outer_repeat. (exists pa_lt_hj32_block_right_outer_repeat_bound. pa_lt_hj32_block_right_outer_repeat_bound + S pa_i_hj32_block_right_outer_repeat = m) -> (((exists pa_h_hj32_block_right_outer_repeat_decoded. pa_h_hj32_block_right_outer_repeat_decoded + S (y) = S ((S (pa_i_hj32_block_right_outer_repeat)) * pa_c_hj32_block_right_outer)) /\ exists pa_q_hj32_block_right_outer_repeat_decoded. pa_b_hj32_block_right_outer = pa_q_hj32_block_right_outer_repeat_decoded * S ((S (pa_i_hj32_block_right_outer_repeat)) * pa_c_hj32_block_right_outer) + (y)))) /\ (exists pa_u_hj32_block_right_outer_product pa_v_hj32_block_right_outer_product. ((((exists pa_h_hj32_block_right_outer_product_start. pa_h_hj32_block_right_outer_product_start + S (1) = S ((S (0)) * pa_v_hj32_block_right_outer_product)) /\ exists pa_q_hj32_block_right_outer_product_start. pa_u_hj32_block_right_outer_product = pa_q_hj32_block_right_outer_product_start * S ((S (0)) * pa_v_hj32_block_right_outer_product) + (1))) /\ ((((exists pa_h_hj32_block_right_outer_product_terminal. pa_h_hj32_block_right_outer_product_terminal + S (q) = S ((S (m)) * pa_v_hj32_block_right_outer_product)) /\ exists pa_q_hj32_block_right_outer_product_terminal. pa_u_hj32_block_right_outer_product = pa_q_hj32_block_right_outer_product_terminal * S ((S (m)) * pa_v_hj32_block_right_outer_product) + (q))) /\ forall pa_i_hj32_block_right_outer_product. (exists pa_lt_hj32_block_right_outer_product_bound. pa_lt_hj32_block_right_outer_product_bound + S pa_i_hj32_block_right_outer_product = m) -> exists pa_p_hj32_block_right_outer_product pa_r_hj32_block_right_outer_product pa_s_hj32_block_right_outer_product. ((((exists pa_h_hj32_block_right_outer_product_factor. pa_h_hj32_block_right_outer_product_factor + S (pa_p_hj32_block_right_outer_product) = S ((S (pa_i_hj32_block_right_outer_product)) * pa_c_hj32_block_right_outer)) /\ exists pa_q_hj32_block_right_outer_product_factor. pa_b_hj32_block_right_outer = pa_q_hj32_block_right_outer_product_factor * S ((S (pa_i_hj32_block_right_outer_product)) * pa_c_hj32_block_right_outer) + (pa_p_hj32_block_right_outer_product))) /\ ((((exists pa_h_hj32_block_right_outer_product_partial. pa_h_hj32_block_right_outer_product_partial + S (pa_r_hj32_block_right_outer_product) = S ((S (pa_i_hj32_block_right_outer_product)) * pa_v_hj32_block_right_outer_product)) /\ exists pa_q_hj32_block_right_outer_product_partial. pa_u_hj32_block_right_outer_product = pa_q_hj32_block_right_outer_product_partial * S ((S (pa_i_hj32_block_right_outer_product)) * pa_v_hj32_block_right_outer_product) + (pa_r_hj32_block_right_outer_product))) /\ ((((exists pa_h_hj32_block_right_outer_product_successor. pa_h_hj32_block_right_outer_product_successor + S (pa_s_hj32_block_right_outer_product) = S ((S (S pa_i_hj32_block_right_outer_product)) * pa_v_hj32_block_right_outer_product)) /\ exists pa_q_hj32_block_right_outer_product_successor. pa_u_hj32_block_right_outer_product = pa_q_hj32_block_right_outer_product_successor * S ((S (S pa_i_hj32_block_right_outer_product)) * pa_v_hj32_block_right_outer_product) + (pa_s_hj32_block_right_outer_product))) /\ pa_s_hj32_block_right_outer_product = pa_r_hj32_block_right_outer_product * pa_p_hj32_block_right_outer_product))))))))
  22. 0022specialize htotal y
  23. 0023specialize htotal m
  24. 0024exact htotal
  25. 0025cases hym
  26. 0026have houter : Le(x1,x2)
    Exact native replay linehave houter : exists bqb_le_gap_hj32_block_outer_bound. bqb_le_gap_hj32_block_outer_bound + (x1) = (x2)
  27. 0027specialize pow_base_monotone x
  28. 0028specialize pow_base_monotone y
  29. 0029specialize pow_base_monotone m
  30. 0030specialize pow_base_monotone x1
  31. 0031specialize pow_base_monotone x2
  32. 0032apply pow_base_monotone
  33. 0033exact hxy
  34. 0034exact hxm_witness
  35. 0035exact hym_witness
  36. 0036have hleft : x1 = X
  37. 0037specialize pow_mul_exp_from_total a
  38. 0038specialize pow_mul_exp_from_total d
  39. 0039specialize pow_mul_exp_from_total m
  40. 0040specialize pow_mul_exp_from_total (d * m)
  41. 0041specialize pow_mul_exp_from_total x
  42. 0042specialize pow_mul_exp_from_total x1
  43. 0043specialize pow_mul_exp_from_total X
  44. 0044apply pow_mul_exp_from_total
  45. 0045exact htotal
  46. 0046refl
  47. 0047exact hx
  48. 0048exact hxm_witness
  49. 0049exact hX
  50. 0050have hright : x2 = Y
  51. 0051specialize pow_mul_exp_from_total b
  52. 0052specialize pow_mul_exp_from_total e
  53. 0053specialize pow_mul_exp_from_total m
  54. 0054specialize pow_mul_exp_from_total (e * m)
  55. 0055specialize pow_mul_exp_from_total y
  56. 0056specialize pow_mul_exp_from_total x2
  57. 0057specialize pow_mul_exp_from_total Y
  58. 0058apply pow_mul_exp_from_total
  59. 0059exact htotal
  60. 0060refl
  61. 0061exact hy
  62. 0062exact hym_witness
  63. 0063exact hY
  64. 0064rewrite hleft at houter
  65. 0065rewrite hright at houter
  66. 0066exact houter