BT00Q5 · Bertrand theorem

bounded_power_valuation_search

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

Finite search either excludes every power divisor or returns a greatest exponent.

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

∀ B. ∀ p. ∀ a. (∀ x. Le(x,B) → ¬PowerDivides(p,x,a)) ∨ (∃ x. BoundedPowerValuation(p,a,B,x))

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

3 occurrences

In local proof propositions

9 occurrences

Exact expanded native-PA statement
forall B p a. (forall f. (exists bpv_gap_search_none_bound. bpv_gap_search_none_bound + f = B) -> ~(exists bpv_result_search_property. ((exists ff_b_search_property_power ff_c_search_property_power. ((forall ff_i_search_property_power_repeat. (exists ff_lt_search_property_power_repeat_bound. ff_lt_search_property_power_repeat_bound + S ff_i_search_property_power_repeat = f) -> (((exists ff_h_search_property_power_repeat_decoded. ff_h_search_property_power_repeat_decoded + S (p) = S ((S (ff_i_search_property_power_repeat)) * ff_c_search_property_power)) /\ exists ff_q_search_property_power_repeat_decoded. ff_b_search_property_power = ff_q_search_property_power_repeat_decoded * S ((S (ff_i_search_property_power_repeat)) * ff_c_search_property_power) + (p)))) /\ (exists ff_u_search_property_power_product ff_v_search_property_power_product. ((((exists ff_h_search_property_power_product_start. ff_h_search_property_power_product_start + S (1) = S ((S (0)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_start. ff_u_search_property_power_product = ff_q_search_property_power_product_start * S ((S (0)) * ff_v_search_property_power_product) + (1))) /\ ((((exists ff_h_search_property_power_product_terminal. ff_h_search_property_power_product_terminal + S (bpv_result_search_property) = S ((S (f)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_terminal. ff_u_search_property_power_product = ff_q_search_property_power_product_terminal * S ((S (f)) * ff_v_search_property_power_product) + (bpv_result_search_property))) /\ forall ff_i_search_property_power_product. (exists ff_lt_search_property_power_product_bound. ff_lt_search_property_power_product_bound + S ff_i_search_property_power_product = f) -> exists ff_p_search_property_power_product ff_r_search_property_power_product ff_s_search_property_power_product. ((((exists ff_h_search_property_power_product_factor. ff_h_search_property_power_product_factor + S (ff_p_search_property_power_product) = S ((S (ff_i_search_property_power_product)) * ff_c_search_property_power)) /\ exists ff_q_search_property_power_product_factor. ff_b_search_property_power = ff_q_search_property_power_product_factor * S ((S (ff_i_search_property_power_product)) * ff_c_search_property_power) + (ff_p_search_property_power_product))) /\ ((((exists ff_h_search_property_power_product_partial. ff_h_search_property_power_product_partial + S (ff_r_search_property_power_product) = S ((S (ff_i_search_property_power_product)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_partial. ff_u_search_property_power_product = ff_q_search_property_power_product_partial * S ((S (ff_i_search_property_power_product)) * ff_v_search_property_power_product) + (ff_r_search_property_power_product))) /\ ((((exists ff_h_search_property_power_product_successor. ff_h_search_property_power_product_successor + S (ff_s_search_property_power_product) = S ((S (S ff_i_search_property_power_product)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_successor. ff_u_search_property_power_product = ff_q_search_property_power_product_successor * S ((S (S ff_i_search_property_power_product)) * ff_v_search_property_power_product) + (ff_s_search_property_power_product))) /\ ff_s_search_property_power_product = ff_r_search_property_power_product * ff_p_search_property_power_product)))))))) /\ (exists bpv_factor_search_property_divides. a = bpv_result_search_property * bpv_factor_search_property_divides)))) \/ (exists e. ((exists bpv_gap_search_selected_bound. bpv_gap_search_selected_bound + e = B) /\ (exists bpv_result_search_selected. ((exists ff_b_search_selected_power ff_c_search_selected_power. ((forall ff_i_search_selected_power_repeat. (exists ff_lt_search_selected_power_repeat_bound. ff_lt_search_selected_power_repeat_bound + S ff_i_search_selected_power_repeat = e) -> (((exists ff_h_search_selected_power_repeat_decoded. ff_h_search_selected_power_repeat_decoded + S (p) = S ((S (ff_i_search_selected_power_repeat)) * ff_c_search_selected_power)) /\ exists ff_q_search_selected_power_repeat_decoded. ff_b_search_selected_power = ff_q_search_selected_power_repeat_decoded * S ((S (ff_i_search_selected_power_repeat)) * ff_c_search_selected_power) + (p)))) /\ (exists ff_u_search_selected_power_product ff_v_search_selected_power_product. ((((exists ff_h_search_selected_power_product_start. ff_h_search_selected_power_product_start + S (1) = S ((S (0)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_start. ff_u_search_selected_power_product = ff_q_search_selected_power_product_start * S ((S (0)) * ff_v_search_selected_power_product) + (1))) /\ ((((exists ff_h_search_selected_power_product_terminal. ff_h_search_selected_power_product_terminal + S (bpv_result_search_selected) = S ((S (e)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_terminal. ff_u_search_selected_power_product = ff_q_search_selected_power_product_terminal * S ((S (e)) * ff_v_search_selected_power_product) + (bpv_result_search_selected))) /\ forall ff_i_search_selected_power_product. (exists ff_lt_search_selected_power_product_bound. ff_lt_search_selected_power_product_bound + S ff_i_search_selected_power_product = e) -> exists ff_p_search_selected_power_product ff_r_search_selected_power_product ff_s_search_selected_power_product. ((((exists ff_h_search_selected_power_product_factor. ff_h_search_selected_power_product_factor + S (ff_p_search_selected_power_product) = S ((S (ff_i_search_selected_power_product)) * ff_c_search_selected_power)) /\ exists ff_q_search_selected_power_product_factor. ff_b_search_selected_power = ff_q_search_selected_power_product_factor * S ((S (ff_i_search_selected_power_product)) * ff_c_search_selected_power) + (ff_p_search_selected_power_product))) /\ ((((exists ff_h_search_selected_power_product_partial. ff_h_search_selected_power_product_partial + S (ff_r_search_selected_power_product) = S ((S (ff_i_search_selected_power_product)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_partial. ff_u_search_selected_power_product = ff_q_search_selected_power_product_partial * S ((S (ff_i_search_selected_power_product)) * ff_v_search_selected_power_product) + (ff_r_search_selected_power_product))) /\ ((((exists ff_h_search_selected_power_product_successor. ff_h_search_selected_power_product_successor + S (ff_s_search_selected_power_product) = S ((S (S ff_i_search_selected_power_product)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_successor. ff_u_search_selected_power_product = ff_q_search_selected_power_product_successor * S ((S (S ff_i_search_selected_power_product)) * ff_v_search_selected_power_product) + (ff_s_search_selected_power_product))) /\ ff_s_search_selected_power_product = ff_r_search_selected_power_product * ff_p_search_selected_power_product)))))))) /\ (exists bpv_factor_search_selected_divides. a = bpv_result_search_selected * bpv_factor_search_selected_divides)))) /\ forall f. (exists bpv_gap_search_candidate_bound. bpv_gap_search_candidate_bound + f = B) -> (exists bpv_result_search_candidate. ((exists ff_b_search_candidate_power ff_c_search_candidate_power. ((forall ff_i_search_candidate_power_repeat. (exists ff_lt_search_candidate_power_repeat_bound. ff_lt_search_candidate_power_repeat_bound + S ff_i_search_candidate_power_repeat = f) -> (((exists ff_h_search_candidate_power_repeat_decoded. ff_h_search_candidate_power_repeat_decoded + S (p) = S ((S (ff_i_search_candidate_power_repeat)) * ff_c_search_candidate_power)) /\ exists ff_q_search_candidate_power_repeat_decoded. ff_b_search_candidate_power = ff_q_search_candidate_power_repeat_decoded * S ((S (ff_i_search_candidate_power_repeat)) * ff_c_search_candidate_power) + (p)))) /\ (exists ff_u_search_candidate_power_product ff_v_search_candidate_power_product. ((((exists ff_h_search_candidate_power_product_start. ff_h_search_candidate_power_product_start + S (1) = S ((S (0)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_start. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_start * S ((S (0)) * ff_v_search_candidate_power_product) + (1))) /\ ((((exists ff_h_search_candidate_power_product_terminal. ff_h_search_candidate_power_product_terminal + S (bpv_result_search_candidate) = S ((S (f)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_terminal. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_terminal * S ((S (f)) * ff_v_search_candidate_power_product) + (bpv_result_search_candidate))) /\ forall ff_i_search_candidate_power_product. (exists ff_lt_search_candidate_power_product_bound. ff_lt_search_candidate_power_product_bound + S ff_i_search_candidate_power_product = f) -> exists ff_p_search_candidate_power_product ff_r_search_candidate_power_product ff_s_search_candidate_power_product. ((((exists ff_h_search_candidate_power_product_factor. ff_h_search_candidate_power_product_factor + S (ff_p_search_candidate_power_product) = S ((S (ff_i_search_candidate_power_product)) * ff_c_search_candidate_power)) /\ exists ff_q_search_candidate_power_product_factor. ff_b_search_candidate_power = ff_q_search_candidate_power_product_factor * S ((S (ff_i_search_candidate_power_product)) * ff_c_search_candidate_power) + (ff_p_search_candidate_power_product))) /\ ((((exists ff_h_search_candidate_power_product_partial. ff_h_search_candidate_power_product_partial + S (ff_r_search_candidate_power_product) = S ((S (ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_partial. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_partial * S ((S (ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product) + (ff_r_search_candidate_power_product))) /\ ((((exists ff_h_search_candidate_power_product_successor. ff_h_search_candidate_power_product_successor + S (ff_s_search_candidate_power_product) = S ((S (S ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_successor. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_successor * S ((S (S ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product) + (ff_s_search_candidate_power_product))) /\ ff_s_search_candidate_power_product = ff_r_search_candidate_power_product * ff_p_search_candidate_power_product)))))))) /\ (exists bpv_factor_search_candidate_divides. a = bpv_result_search_candidate * bpv_factor_search_candidate_divides))) -> (exists bpv_gap_search_maximal. bpv_gap_search_maximal + f = e))

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

122 script commands · 37 reading checkpoints · 7 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)
01Induction on BL1–3

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

  1. L1
    induction B
  2. L2
    intro p
  3. L3
    intro a
02Establish hboundaryL4–8

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

  1. L4
    have hboundary : PowerDivides(p,0,a) ∨ ¬PowerDivides(p,0,a)Definitions: PowerDivides(p,0,a)Original native command in the exact edition
  2. L5
    specialize power_divides_decidable p
  3. L6
    specialize power_divides_decidable 0
  4. L7
    specialize power_divides_decidable a
  5. L8
    exact power_divides_decidable
03Separate the logical casesL9–10

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

  1. L9
    cases hboundary
  2. L10
    right
04Construct an explicit witnessL11–11

Supply the displayed value, then prove that it has the required property.

  1. L11
    exists 0
05Separate the logical casesL12–13

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

  1. L12
    split
  2. L13
    split
06Use earlier factsL14–16

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

  1. L14
    specialize le_refl 0
  2. L15
    exact le_refl
  3. L16
    exact hboundary_left
07Fix variables and assumptionsL17–19

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

  1. L17
    intro f
  2. L18
    intro hf
  3. L19
    intro hproperty
08Establish hf0L20–26

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

  1. L20
    have hf0 : f = 0
  2. L21
    specialize le_zero f
  3. L22
    apply le_zero
  4. L23
    exact hf
  5. L24
    rewrite hf0
  6. L25
    specialize le_refl 0
  7. L26
    exact le_refl
09Separate the logical casesL27–27

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

  1. L27
    left
10Fix variables and assumptionsL28–30

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

  1. L28
    intro f
  2. L29
    intro hf
  3. L30
    intro hproperty
11Establish hf0L31–40

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

  1. L31
    have hf0 : f = 0
  2. L32
    specialize le_zero f
  3. L33
    apply le_zero
  4. L34
    exact hf
  5. L35
    apply hboundary_right
  6. L36
    rewrite hf0 at hproperty
  7. L37
    rewrite hf0 at hproperty
  8. L38
    rewrite hf0 at hproperty
  9. L39
    rewrite hf0 at hproperty
  10. L40
    exact hproperty
12Fix variables and assumptionsL41–42

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

  1. L41
    intro p
  2. L42
    intro a
13Establish hboundaryL43–47

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

  1. L43
    have hboundary : PowerDivides(p,S B,a) ∨ ¬PowerDivides(p,S B,a)Definitions: PowerDivides(p,S B,a)Original native command in the exact edition
  2. L44
    specialize power_divides_decidable p
  3. L45
    specialize power_divides_decidable (S B)
  4. L46
    specialize power_divides_decidable a
  5. L47
    exact power_divides_decidable
14Separate the logical casesL48–49

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

  1. L48
    cases hboundary
  2. L49
    right
15Construct an explicit witnessL50–50

Supply the displayed value, then prove that it has the required property.

  1. L50
    exists S B
16Separate the logical casesL51–52

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

  1. L51
    split
  2. L52
    split
17Use earlier factsL53–55

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

  1. L53
    specialize le_refl (S B)
  2. L54
    exact le_refl
  3. L55
    exact hboundary_left
18Fix variables and assumptionsL56–58

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

  1. L56
    intro f
  2. L57
    intro hf
  3. L58
    intro hproperty
19Use earlier factsL59–59

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

  1. L59
    exact hf
20Establish hpreviousL60–63

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

  1. L60
    have hprevious : (∀ x. Le(x,B) → ¬PowerDivides(p,x,a)) ∨ (∃ x. BoundedPowerValuation(p,a,B,x))Definitions: Le(x,B)PowerDivides(p,x,a)BoundedPowerValuation(p,a,B,x)Original native command in the exact edition
  2. L61
    specialize IH p
  3. L62
    specialize IH a
  4. L63
    exact IH
21Separate the logical casesL64–65

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

  1. L64
    cases hprevious
  2. L65
    left
22Fix variables and assumptionsL66–68

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

  1. L66
    intro f
  2. L67
    intro hf
  3. L68
    intro hproperty
23Establish hsplitL69–73

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.

  1. L69
    have hsplit : f = S B ∨ Lt(f,S B)Definitions: Lt(f,S B)Original native command in the exact edition
  2. L70
    specialize le_eq_or_lt f
  3. L71
    specialize le_eq_or_lt (S B)
  4. L72
    apply le_eq_or_lt
  5. L73
    exact hf
24Separate the logical casesL74–74

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

  1. L74
    cases hsplit
25Use earlier factsL75–75

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

  1. L75
    apply hboundary_right
26Calculate and transport equalitiesL76–79

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

  1. L76
    rewrite hsplit_left at hproperty
  2. L77
    rewrite hsplit_left at hproperty
  3. L78
    rewrite hsplit_left at hproperty
  4. L79
    rewrite hsplit_left at hproperty
27Use earlier factsL80–87

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

  1. L80
    exact hproperty
  2. L81
    specialize hprevious_left f
  3. L82
    apply hprevious_left
  4. L83
    specialize le_of_succ_le_succ f
  5. L84
    specialize le_of_succ_le_succ B
  6. L85
    apply le_of_succ_le_succ
  7. L86
    exact hsplit_right
  8. L87
    exact hproperty
28Separate the logical casesL88–91

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

  1. L88
    right
  2. L89
    cases hprevious_right
  3. L90
    cases hprevious_right_witness
  4. L91
    cases hprevious_right_witness_left
29Construct an explicit witnessL92–92

Supply the displayed value, then prove that it has the required property.

  1. L92
    exists x
30Separate the logical casesL93–94

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

  1. L93
    split
  2. L94
    split
31Use earlier factsL95–99

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

  1. L95
    specialize le_succ x
  2. L96
    specialize le_succ B
  3. L97
    apply le_succ
  4. L98
    exact hprevious_right_witness_left_left
  5. L99
    exact hprevious_right_witness_left_right
32Fix variables and assumptionsL100–102

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

  1. L100
    intro f
  2. L101
    intro hf
  3. L102
    intro hproperty
33Establish hsplitL103–107

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.

  1. L103
    have hsplit : f = S B ∨ Lt(f,S B)Definitions: Lt(f,S B)Original native command in the exact edition
  2. L104
    specialize le_eq_or_lt f
  3. L105
    specialize le_eq_or_lt (S B)
  4. L106
    apply le_eq_or_lt
  5. L107
    exact hf
34Separate the logical casesL108–109

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

  1. L108
    cases hsplit
  2. L109
    exfalso
35Use earlier factsL110–110

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

  1. L110
    apply hboundary_right
36Calculate and transport equalitiesL111–114

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

  1. L111
    rewrite hsplit_left at hproperty
  2. L112
    rewrite hsplit_left at hproperty
  3. L113
    rewrite hsplit_left at hproperty
  4. L114
    rewrite hsplit_left at hproperty
37Use earlier factsL115–122

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

  1. L115
    exact hproperty
  2. L116
    specialize hprevious_right_witness_right f
  3. L117
    apply hprevious_right_witness_right
  4. L118
    specialize le_of_succ_le_succ f
  5. L119
    specialize le_of_succ_le_succ B
  6. L120
    apply le_of_succ_le_succ
  7. L121
    exact hsplit_right
  8. L122
    exact hproperty

Library-wide reading audit

Original defined command ledger · 122 lines
  1. 0001induction B
  2. 0002intro p
  3. 0003intro a
  4. 0004have hboundary : PowerDivides(p,0,a) ∨ ¬PowerDivides(p,0,a)
    Exact native replay linehave hboundary : (exists bpvi_result_search_base_boundary. ((exists bpvi_b_search_base_boundary_power bpvi_c_search_base_boundary_power. ((forall bpvi_i_search_base_boundary_power. (exists bpvi_repeat_gap_search_base_boundary_power. bpvi_repeat_gap_search_base_boundary_power + S bpvi_i_search_base_boundary_power = 0) -> (((exists bpvi_h_search_base_boundary_power_repeat. bpvi_h_search_base_boundary_power_repeat + S (p) = S ((S (bpvi_i_search_base_boundary_power)) * bpvi_c_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_repeat. bpvi_b_search_base_boundary_power = bpvi_q_search_base_boundary_power_repeat * S ((S (bpvi_i_search_base_boundary_power)) * bpvi_c_search_base_boundary_power) + (p)))) /\ (exists bpvi_u_search_base_boundary_power bpvi_v_search_base_boundary_power. ((((exists bpvi_h_search_base_boundary_power_start. bpvi_h_search_base_boundary_power_start + S (1) = S ((S (0)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_start. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_start * S ((S (0)) * bpvi_v_search_base_boundary_power) + (1))) /\ ((((exists bpvi_h_search_base_boundary_power_terminal. bpvi_h_search_base_boundary_power_terminal + S (bpvi_result_search_base_boundary) = S ((S (0)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_terminal. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_terminal * S ((S (0)) * bpvi_v_search_base_boundary_power) + (bpvi_result_search_base_boundary))) /\ forall bpvi_j_search_base_boundary_power. (exists bpvi_product_gap_search_base_boundary_power. bpvi_product_gap_search_base_boundary_power + S bpvi_j_search_base_boundary_power = 0) -> exists bpvi_factor_search_base_boundary_power bpvi_partial_search_base_boundary_power bpvi_successor_search_base_boundary_power. ((((exists bpvi_h_search_base_boundary_power_factor. bpvi_h_search_base_boundary_power_factor + S (bpvi_factor_search_base_boundary_power) = S ((S (bpvi_j_search_base_boundary_power)) * bpvi_c_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_factor. bpvi_b_search_base_boundary_power = bpvi_q_search_base_boundary_power_factor * S ((S (bpvi_j_search_base_boundary_power)) * bpvi_c_search_base_boundary_power) + (bpvi_factor_search_base_boundary_power))) /\ ((((exists bpvi_h_search_base_boundary_power_partial. bpvi_h_search_base_boundary_power_partial + S (bpvi_partial_search_base_boundary_power) = S ((S (bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_partial. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_partial * S ((S (bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power) + (bpvi_partial_search_base_boundary_power))) /\ ((((exists bpvi_h_search_base_boundary_power_successor. bpvi_h_search_base_boundary_power_successor + S (bpvi_successor_search_base_boundary_power) = S ((S (S bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_successor. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_successor * S ((S (S bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power) + (bpvi_successor_search_base_boundary_power))) /\ bpvi_successor_search_base_boundary_power = bpvi_partial_search_base_boundary_power * bpvi_factor_search_base_boundary_power)))))))) /\ exists bpvi_divisor_factor_search_base_boundary. a = bpvi_result_search_base_boundary * bpvi_divisor_factor_search_base_boundary)) \/ ~(exists bpvi_result_search_base_boundary. ((exists bpvi_b_search_base_boundary_power bpvi_c_search_base_boundary_power. ((forall bpvi_i_search_base_boundary_power. (exists bpvi_repeat_gap_search_base_boundary_power. bpvi_repeat_gap_search_base_boundary_power + S bpvi_i_search_base_boundary_power = 0) -> (((exists bpvi_h_search_base_boundary_power_repeat. bpvi_h_search_base_boundary_power_repeat + S (p) = S ((S (bpvi_i_search_base_boundary_power)) * bpvi_c_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_repeat. bpvi_b_search_base_boundary_power = bpvi_q_search_base_boundary_power_repeat * S ((S (bpvi_i_search_base_boundary_power)) * bpvi_c_search_base_boundary_power) + (p)))) /\ (exists bpvi_u_search_base_boundary_power bpvi_v_search_base_boundary_power. ((((exists bpvi_h_search_base_boundary_power_start. bpvi_h_search_base_boundary_power_start + S (1) = S ((S (0)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_start. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_start * S ((S (0)) * bpvi_v_search_base_boundary_power) + (1))) /\ ((((exists bpvi_h_search_base_boundary_power_terminal. bpvi_h_search_base_boundary_power_terminal + S (bpvi_result_search_base_boundary) = S ((S (0)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_terminal. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_terminal * S ((S (0)) * bpvi_v_search_base_boundary_power) + (bpvi_result_search_base_boundary))) /\ forall bpvi_j_search_base_boundary_power. (exists bpvi_product_gap_search_base_boundary_power. bpvi_product_gap_search_base_boundary_power + S bpvi_j_search_base_boundary_power = 0) -> exists bpvi_factor_search_base_boundary_power bpvi_partial_search_base_boundary_power bpvi_successor_search_base_boundary_power. ((((exists bpvi_h_search_base_boundary_power_factor. bpvi_h_search_base_boundary_power_factor + S (bpvi_factor_search_base_boundary_power) = S ((S (bpvi_j_search_base_boundary_power)) * bpvi_c_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_factor. bpvi_b_search_base_boundary_power = bpvi_q_search_base_boundary_power_factor * S ((S (bpvi_j_search_base_boundary_power)) * bpvi_c_search_base_boundary_power) + (bpvi_factor_search_base_boundary_power))) /\ ((((exists bpvi_h_search_base_boundary_power_partial. bpvi_h_search_base_boundary_power_partial + S (bpvi_partial_search_base_boundary_power) = S ((S (bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_partial. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_partial * S ((S (bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power) + (bpvi_partial_search_base_boundary_power))) /\ ((((exists bpvi_h_search_base_boundary_power_successor. bpvi_h_search_base_boundary_power_successor + S (bpvi_successor_search_base_boundary_power) = S ((S (S bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power)) /\ exists bpvi_q_search_base_boundary_power_successor. bpvi_u_search_base_boundary_power = bpvi_q_search_base_boundary_power_successor * S ((S (S bpvi_j_search_base_boundary_power)) * bpvi_v_search_base_boundary_power) + (bpvi_successor_search_base_boundary_power))) /\ bpvi_successor_search_base_boundary_power = bpvi_partial_search_base_boundary_power * bpvi_factor_search_base_boundary_power)))))))) /\ exists bpvi_divisor_factor_search_base_boundary. a = bpvi_result_search_base_boundary * bpvi_divisor_factor_search_base_boundary))
  5. 0005specialize power_divides_decidable p
  6. 0006specialize power_divides_decidable 0
  7. 0007specialize power_divides_decidable a
  8. 0008exact power_divides_decidable
  9. 0009cases hboundary
  10. 0010right
  11. 0011exists 0
  12. 0012split
  13. 0013split
  14. 0014specialize le_refl 0
  15. 0015exact le_refl
  16. 0016exact hboundary_left
  17. 0017intro f
  18. 0018intro hf
  19. 0019intro hproperty
  20. 0020have hf0 : f = 0
  21. 0021specialize le_zero f
  22. 0022apply le_zero
  23. 0023exact hf
  24. 0024rewrite hf0
  25. 0025specialize le_refl 0
  26. 0026exact le_refl
  27. 0027left
  28. 0028intro f
  29. 0029intro hf
  30. 0030intro hproperty
  31. 0031have hf0 : f = 0
  32. 0032specialize le_zero f
  33. 0033apply le_zero
  34. 0034exact hf
  35. 0035apply hboundary_right
  36. 0036rewrite hf0 at hproperty
  37. 0037rewrite hf0 at hproperty
  38. 0038rewrite hf0 at hproperty
  39. 0039rewrite hf0 at hproperty
  40. 0040exact hproperty
  41. 0041intro p
  42. 0042intro a
  43. 0043have hboundary : PowerDivides(p,S B,a) ∨ ¬PowerDivides(p,S B,a)
    Exact native replay linehave hboundary : (exists bpvi_result_search_succ_boundary. ((exists bpvi_b_search_succ_boundary_power bpvi_c_search_succ_boundary_power. ((forall bpvi_i_search_succ_boundary_power. (exists bpvi_repeat_gap_search_succ_boundary_power. bpvi_repeat_gap_search_succ_boundary_power + S bpvi_i_search_succ_boundary_power = S B) -> (((exists bpvi_h_search_succ_boundary_power_repeat. bpvi_h_search_succ_boundary_power_repeat + S (p) = S ((S (bpvi_i_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_repeat. bpvi_b_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_repeat * S ((S (bpvi_i_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power) + (p)))) /\ (exists bpvi_u_search_succ_boundary_power bpvi_v_search_succ_boundary_power. ((((exists bpvi_h_search_succ_boundary_power_start. bpvi_h_search_succ_boundary_power_start + S (1) = S ((S (0)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_start. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_start * S ((S (0)) * bpvi_v_search_succ_boundary_power) + (1))) /\ ((((exists bpvi_h_search_succ_boundary_power_terminal. bpvi_h_search_succ_boundary_power_terminal + S (bpvi_result_search_succ_boundary) = S ((S (S B)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_terminal. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_terminal * S ((S (S B)) * bpvi_v_search_succ_boundary_power) + (bpvi_result_search_succ_boundary))) /\ forall bpvi_j_search_succ_boundary_power. (exists bpvi_product_gap_search_succ_boundary_power. bpvi_product_gap_search_succ_boundary_power + S bpvi_j_search_succ_boundary_power = S B) -> exists bpvi_factor_search_succ_boundary_power bpvi_partial_search_succ_boundary_power bpvi_successor_search_succ_boundary_power. ((((exists bpvi_h_search_succ_boundary_power_factor. bpvi_h_search_succ_boundary_power_factor + S (bpvi_factor_search_succ_boundary_power) = S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_factor. bpvi_b_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_factor * S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power) + (bpvi_factor_search_succ_boundary_power))) /\ ((((exists bpvi_h_search_succ_boundary_power_partial. bpvi_h_search_succ_boundary_power_partial + S (bpvi_partial_search_succ_boundary_power) = S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_partial. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_partial * S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power) + (bpvi_partial_search_succ_boundary_power))) /\ ((((exists bpvi_h_search_succ_boundary_power_successor. bpvi_h_search_succ_boundary_power_successor + S (bpvi_successor_search_succ_boundary_power) = S ((S (S bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_successor. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_successor * S ((S (S bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power) + (bpvi_successor_search_succ_boundary_power))) /\ bpvi_successor_search_succ_boundary_power = bpvi_partial_search_succ_boundary_power * bpvi_factor_search_succ_boundary_power)))))))) /\ exists bpvi_divisor_factor_search_succ_boundary. a = bpvi_result_search_succ_boundary * bpvi_divisor_factor_search_succ_boundary)) \/ ~(exists bpvi_result_search_succ_boundary. ((exists bpvi_b_search_succ_boundary_power bpvi_c_search_succ_boundary_power. ((forall bpvi_i_search_succ_boundary_power. (exists bpvi_repeat_gap_search_succ_boundary_power. bpvi_repeat_gap_search_succ_boundary_power + S bpvi_i_search_succ_boundary_power = S B) -> (((exists bpvi_h_search_succ_boundary_power_repeat. bpvi_h_search_succ_boundary_power_repeat + S (p) = S ((S (bpvi_i_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_repeat. bpvi_b_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_repeat * S ((S (bpvi_i_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power) + (p)))) /\ (exists bpvi_u_search_succ_boundary_power bpvi_v_search_succ_boundary_power. ((((exists bpvi_h_search_succ_boundary_power_start. bpvi_h_search_succ_boundary_power_start + S (1) = S ((S (0)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_start. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_start * S ((S (0)) * bpvi_v_search_succ_boundary_power) + (1))) /\ ((((exists bpvi_h_search_succ_boundary_power_terminal. bpvi_h_search_succ_boundary_power_terminal + S (bpvi_result_search_succ_boundary) = S ((S (S B)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_terminal. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_terminal * S ((S (S B)) * bpvi_v_search_succ_boundary_power) + (bpvi_result_search_succ_boundary))) /\ forall bpvi_j_search_succ_boundary_power. (exists bpvi_product_gap_search_succ_boundary_power. bpvi_product_gap_search_succ_boundary_power + S bpvi_j_search_succ_boundary_power = S B) -> exists bpvi_factor_search_succ_boundary_power bpvi_partial_search_succ_boundary_power bpvi_successor_search_succ_boundary_power. ((((exists bpvi_h_search_succ_boundary_power_factor. bpvi_h_search_succ_boundary_power_factor + S (bpvi_factor_search_succ_boundary_power) = S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_factor. bpvi_b_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_factor * S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_c_search_succ_boundary_power) + (bpvi_factor_search_succ_boundary_power))) /\ ((((exists bpvi_h_search_succ_boundary_power_partial. bpvi_h_search_succ_boundary_power_partial + S (bpvi_partial_search_succ_boundary_power) = S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_partial. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_partial * S ((S (bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power) + (bpvi_partial_search_succ_boundary_power))) /\ ((((exists bpvi_h_search_succ_boundary_power_successor. bpvi_h_search_succ_boundary_power_successor + S (bpvi_successor_search_succ_boundary_power) = S ((S (S bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power)) /\ exists bpvi_q_search_succ_boundary_power_successor. bpvi_u_search_succ_boundary_power = bpvi_q_search_succ_boundary_power_successor * S ((S (S bpvi_j_search_succ_boundary_power)) * bpvi_v_search_succ_boundary_power) + (bpvi_successor_search_succ_boundary_power))) /\ bpvi_successor_search_succ_boundary_power = bpvi_partial_search_succ_boundary_power * bpvi_factor_search_succ_boundary_power)))))))) /\ exists bpvi_divisor_factor_search_succ_boundary. a = bpvi_result_search_succ_boundary * bpvi_divisor_factor_search_succ_boundary))
  44. 0044specialize power_divides_decidable p
  45. 0045specialize power_divides_decidable (S B)
  46. 0046specialize power_divides_decidable a
  47. 0047exact power_divides_decidable
  48. 0048cases hboundary
  49. 0049right
  50. 0050exists S B
  51. 0051split
  52. 0052split
  53. 0053specialize le_refl (S B)
  54. 0054exact le_refl
  55. 0055exact hboundary_left
  56. 0056intro f
  57. 0057intro hf
  58. 0058intro hproperty
  59. 0059exact hf
  60. 0060have hprevious : (∀ x. Le(x,B) → ¬PowerDivides(p,x,a)) ∨ (∃ x. BoundedPowerValuation(p,a,B,x))
    Exact native replay linehave hprevious : (forall f. (exists bpv_gap_search_none_bound. bpv_gap_search_none_bound + f = B) -> ~(exists bpv_result_search_property. ((exists ff_b_search_property_power ff_c_search_property_power. ((forall ff_i_search_property_power_repeat. (exists ff_lt_search_property_power_repeat_bound. ff_lt_search_property_power_repeat_bound + S ff_i_search_property_power_repeat = f) -> (((exists ff_h_search_property_power_repeat_decoded. ff_h_search_property_power_repeat_decoded + S (p) = S ((S (ff_i_search_property_power_repeat)) * ff_c_search_property_power)) /\ exists ff_q_search_property_power_repeat_decoded. ff_b_search_property_power = ff_q_search_property_power_repeat_decoded * S ((S (ff_i_search_property_power_repeat)) * ff_c_search_property_power) + (p)))) /\ (exists ff_u_search_property_power_product ff_v_search_property_power_product. ((((exists ff_h_search_property_power_product_start. ff_h_search_property_power_product_start + S (1) = S ((S (0)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_start. ff_u_search_property_power_product = ff_q_search_property_power_product_start * S ((S (0)) * ff_v_search_property_power_product) + (1))) /\ ((((exists ff_h_search_property_power_product_terminal. ff_h_search_property_power_product_terminal + S (bpv_result_search_property) = S ((S (f)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_terminal. ff_u_search_property_power_product = ff_q_search_property_power_product_terminal * S ((S (f)) * ff_v_search_property_power_product) + (bpv_result_search_property))) /\ forall ff_i_search_property_power_product. (exists ff_lt_search_property_power_product_bound. ff_lt_search_property_power_product_bound + S ff_i_search_property_power_product = f) -> exists ff_p_search_property_power_product ff_r_search_property_power_product ff_s_search_property_power_product. ((((exists ff_h_search_property_power_product_factor. ff_h_search_property_power_product_factor + S (ff_p_search_property_power_product) = S ((S (ff_i_search_property_power_product)) * ff_c_search_property_power)) /\ exists ff_q_search_property_power_product_factor. ff_b_search_property_power = ff_q_search_property_power_product_factor * S ((S (ff_i_search_property_power_product)) * ff_c_search_property_power) + (ff_p_search_property_power_product))) /\ ((((exists ff_h_search_property_power_product_partial. ff_h_search_property_power_product_partial + S (ff_r_search_property_power_product) = S ((S (ff_i_search_property_power_product)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_partial. ff_u_search_property_power_product = ff_q_search_property_power_product_partial * S ((S (ff_i_search_property_power_product)) * ff_v_search_property_power_product) + (ff_r_search_property_power_product))) /\ ((((exists ff_h_search_property_power_product_successor. ff_h_search_property_power_product_successor + S (ff_s_search_property_power_product) = S ((S (S ff_i_search_property_power_product)) * ff_v_search_property_power_product)) /\ exists ff_q_search_property_power_product_successor. ff_u_search_property_power_product = ff_q_search_property_power_product_successor * S ((S (S ff_i_search_property_power_product)) * ff_v_search_property_power_product) + (ff_s_search_property_power_product))) /\ ff_s_search_property_power_product = ff_r_search_property_power_product * ff_p_search_property_power_product)))))))) /\ (exists bpv_factor_search_property_divides. a = bpv_result_search_property * bpv_factor_search_property_divides)))) \/ (exists e. ((exists bpv_gap_search_selected_bound. bpv_gap_search_selected_bound + e = B) /\ (exists bpv_result_search_selected. ((exists ff_b_search_selected_power ff_c_search_selected_power. ((forall ff_i_search_selected_power_repeat. (exists ff_lt_search_selected_power_repeat_bound. ff_lt_search_selected_power_repeat_bound + S ff_i_search_selected_power_repeat = e) -> (((exists ff_h_search_selected_power_repeat_decoded. ff_h_search_selected_power_repeat_decoded + S (p) = S ((S (ff_i_search_selected_power_repeat)) * ff_c_search_selected_power)) /\ exists ff_q_search_selected_power_repeat_decoded. ff_b_search_selected_power = ff_q_search_selected_power_repeat_decoded * S ((S (ff_i_search_selected_power_repeat)) * ff_c_search_selected_power) + (p)))) /\ (exists ff_u_search_selected_power_product ff_v_search_selected_power_product. ((((exists ff_h_search_selected_power_product_start. ff_h_search_selected_power_product_start + S (1) = S ((S (0)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_start. ff_u_search_selected_power_product = ff_q_search_selected_power_product_start * S ((S (0)) * ff_v_search_selected_power_product) + (1))) /\ ((((exists ff_h_search_selected_power_product_terminal. ff_h_search_selected_power_product_terminal + S (bpv_result_search_selected) = S ((S (e)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_terminal. ff_u_search_selected_power_product = ff_q_search_selected_power_product_terminal * S ((S (e)) * ff_v_search_selected_power_product) + (bpv_result_search_selected))) /\ forall ff_i_search_selected_power_product. (exists ff_lt_search_selected_power_product_bound. ff_lt_search_selected_power_product_bound + S ff_i_search_selected_power_product = e) -> exists ff_p_search_selected_power_product ff_r_search_selected_power_product ff_s_search_selected_power_product. ((((exists ff_h_search_selected_power_product_factor. ff_h_search_selected_power_product_factor + S (ff_p_search_selected_power_product) = S ((S (ff_i_search_selected_power_product)) * ff_c_search_selected_power)) /\ exists ff_q_search_selected_power_product_factor. ff_b_search_selected_power = ff_q_search_selected_power_product_factor * S ((S (ff_i_search_selected_power_product)) * ff_c_search_selected_power) + (ff_p_search_selected_power_product))) /\ ((((exists ff_h_search_selected_power_product_partial. ff_h_search_selected_power_product_partial + S (ff_r_search_selected_power_product) = S ((S (ff_i_search_selected_power_product)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_partial. ff_u_search_selected_power_product = ff_q_search_selected_power_product_partial * S ((S (ff_i_search_selected_power_product)) * ff_v_search_selected_power_product) + (ff_r_search_selected_power_product))) /\ ((((exists ff_h_search_selected_power_product_successor. ff_h_search_selected_power_product_successor + S (ff_s_search_selected_power_product) = S ((S (S ff_i_search_selected_power_product)) * ff_v_search_selected_power_product)) /\ exists ff_q_search_selected_power_product_successor. ff_u_search_selected_power_product = ff_q_search_selected_power_product_successor * S ((S (S ff_i_search_selected_power_product)) * ff_v_search_selected_power_product) + (ff_s_search_selected_power_product))) /\ ff_s_search_selected_power_product = ff_r_search_selected_power_product * ff_p_search_selected_power_product)))))))) /\ (exists bpv_factor_search_selected_divides. a = bpv_result_search_selected * bpv_factor_search_selected_divides)))) /\ forall f. (exists bpv_gap_search_candidate_bound. bpv_gap_search_candidate_bound + f = B) -> (exists bpv_result_search_candidate. ((exists ff_b_search_candidate_power ff_c_search_candidate_power. ((forall ff_i_search_candidate_power_repeat. (exists ff_lt_search_candidate_power_repeat_bound. ff_lt_search_candidate_power_repeat_bound + S ff_i_search_candidate_power_repeat = f) -> (((exists ff_h_search_candidate_power_repeat_decoded. ff_h_search_candidate_power_repeat_decoded + S (p) = S ((S (ff_i_search_candidate_power_repeat)) * ff_c_search_candidate_power)) /\ exists ff_q_search_candidate_power_repeat_decoded. ff_b_search_candidate_power = ff_q_search_candidate_power_repeat_decoded * S ((S (ff_i_search_candidate_power_repeat)) * ff_c_search_candidate_power) + (p)))) /\ (exists ff_u_search_candidate_power_product ff_v_search_candidate_power_product. ((((exists ff_h_search_candidate_power_product_start. ff_h_search_candidate_power_product_start + S (1) = S ((S (0)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_start. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_start * S ((S (0)) * ff_v_search_candidate_power_product) + (1))) /\ ((((exists ff_h_search_candidate_power_product_terminal. ff_h_search_candidate_power_product_terminal + S (bpv_result_search_candidate) = S ((S (f)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_terminal. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_terminal * S ((S (f)) * ff_v_search_candidate_power_product) + (bpv_result_search_candidate))) /\ forall ff_i_search_candidate_power_product. (exists ff_lt_search_candidate_power_product_bound. ff_lt_search_candidate_power_product_bound + S ff_i_search_candidate_power_product = f) -> exists ff_p_search_candidate_power_product ff_r_search_candidate_power_product ff_s_search_candidate_power_product. ((((exists ff_h_search_candidate_power_product_factor. ff_h_search_candidate_power_product_factor + S (ff_p_search_candidate_power_product) = S ((S (ff_i_search_candidate_power_product)) * ff_c_search_candidate_power)) /\ exists ff_q_search_candidate_power_product_factor. ff_b_search_candidate_power = ff_q_search_candidate_power_product_factor * S ((S (ff_i_search_candidate_power_product)) * ff_c_search_candidate_power) + (ff_p_search_candidate_power_product))) /\ ((((exists ff_h_search_candidate_power_product_partial. ff_h_search_candidate_power_product_partial + S (ff_r_search_candidate_power_product) = S ((S (ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_partial. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_partial * S ((S (ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product) + (ff_r_search_candidate_power_product))) /\ ((((exists ff_h_search_candidate_power_product_successor. ff_h_search_candidate_power_product_successor + S (ff_s_search_candidate_power_product) = S ((S (S ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product)) /\ exists ff_q_search_candidate_power_product_successor. ff_u_search_candidate_power_product = ff_q_search_candidate_power_product_successor * S ((S (S ff_i_search_candidate_power_product)) * ff_v_search_candidate_power_product) + (ff_s_search_candidate_power_product))) /\ ff_s_search_candidate_power_product = ff_r_search_candidate_power_product * ff_p_search_candidate_power_product)))))))) /\ (exists bpv_factor_search_candidate_divides. a = bpv_result_search_candidate * bpv_factor_search_candidate_divides))) -> (exists bpv_gap_search_maximal. bpv_gap_search_maximal + f = e))
  61. 0061specialize IH p
  62. 0062specialize IH a
  63. 0063exact IH
  64. 0064cases hprevious
  65. 0065left
  66. 0066intro f
  67. 0067intro hf
  68. 0068intro hproperty
  69. 0069have hsplit : f = S B ∨ Lt(f,S B)
    Exact native replay linehave hsplit : f = S B \/ exists h. h + S f = S B
  70. 0070specialize le_eq_or_lt f
  71. 0071specialize le_eq_or_lt (S B)
  72. 0072apply le_eq_or_lt
  73. 0073exact hf
  74. 0074cases hsplit
  75. 0075apply hboundary_right
  76. 0076rewrite hsplit_left at hproperty
  77. 0077rewrite hsplit_left at hproperty
  78. 0078rewrite hsplit_left at hproperty
  79. 0079rewrite hsplit_left at hproperty
  80. 0080exact hproperty
  81. 0081specialize hprevious_left f
  82. 0082apply hprevious_left
  83. 0083specialize le_of_succ_le_succ f
  84. 0084specialize le_of_succ_le_succ B
  85. 0085apply le_of_succ_le_succ
  86. 0086exact hsplit_right
  87. 0087exact hproperty
  88. 0088right
  89. 0089cases hprevious_right
  90. 0090cases hprevious_right_witness
  91. 0091cases hprevious_right_witness_left
  92. 0092exists x
  93. 0093split
  94. 0094split
  95. 0095specialize le_succ x
  96. 0096specialize le_succ B
  97. 0097apply le_succ
  98. 0098exact hprevious_right_witness_left_left
  99. 0099exact hprevious_right_witness_left_right
  100. 0100intro f
  101. 0101intro hf
  102. 0102intro hproperty
  103. 0103have hsplit : f = S B ∨ Lt(f,S B)
    Exact native replay linehave hsplit : f = S B \/ exists h. h + S f = S B
  104. 0104specialize le_eq_or_lt f
  105. 0105specialize le_eq_or_lt (S B)
  106. 0106apply le_eq_or_lt
  107. 0107exact hf
  108. 0108cases hsplit
  109. 0109exfalso
  110. 0110apply hboundary_right
  111. 0111rewrite hsplit_left at hproperty
  112. 0112rewrite hsplit_left at hproperty
  113. 0113rewrite hsplit_left at hproperty
  114. 0114rewrite hsplit_left at hproperty
  115. 0115exact hproperty
  116. 0116specialize hprevious_right_witness_right f
  117. 0117apply hprevious_right_witness_right
  118. 0118specialize le_of_succ_le_succ f
  119. 0119specialize le_of_succ_le_succ B
  120. 0120apply le_of_succ_le_succ
  121. 0121exact hsplit_right
  122. 0122exact hproperty