BT00VD · Bertrand theorem

beta_pairwise_coprime_product_divides_common_multiple

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

A pairwise-coprime product divides every common multiple of its factors.

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. ∀ c. ∀ l. ∀ n. ∀ z. (∀ x. ∀ y. ∀ m. ∀ k. Lt(x,l)Lt(y,l)BetaAt(b,c,x,m)BetaAt(b,c,y,k) → ¬x = y → Coprime(m,k)) → (∀ x. ∀ y. Lt(x,l)BetaAt(b,c,x,y)Dvd(y,z)) → Product(b,c,l,n)Dvd(n,z)

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

10 occurrences

In local proof propositions

19 occurrences

Exact expanded native-PA statement
forall b c l n z. (forall bpr_left_index_bpcpdcm_pairwise bpr_right_index_bpcpdcm_pairwise bpr_left_value_bpcpdcm_pairwise bpr_right_value_bpcpdcm_pairwise. (exists bpr_gap_bpcpdcm_pairwise_left_bound. bpr_gap_bpcpdcm_pairwise_left_bound + S (bpr_left_index_bpcpdcm_pairwise) = l) -> (exists bpr_gap_bpcpdcm_pairwise_right_bound. bpr_gap_bpcpdcm_pairwise_right_bound + S (bpr_right_index_bpcpdcm_pairwise) = l) -> (((exists bpr_height_bpcpdcm_pairwise_left_at. bpr_height_bpcpdcm_pairwise_left_at + S (bpr_left_value_bpcpdcm_pairwise) = S ((S (bpr_left_index_bpcpdcm_pairwise)) * c)) /\ exists bpr_quotient_bpcpdcm_pairwise_left_at. b = bpr_quotient_bpcpdcm_pairwise_left_at * S ((S (bpr_left_index_bpcpdcm_pairwise)) * c) + (bpr_left_value_bpcpdcm_pairwise))) -> (((exists bpr_height_bpcpdcm_pairwise_right_at. bpr_height_bpcpdcm_pairwise_right_at + S (bpr_right_value_bpcpdcm_pairwise) = S ((S (bpr_right_index_bpcpdcm_pairwise)) * c)) /\ exists bpr_quotient_bpcpdcm_pairwise_right_at. b = bpr_quotient_bpcpdcm_pairwise_right_at * S ((S (bpr_right_index_bpcpdcm_pairwise)) * c) + (bpr_right_value_bpcpdcm_pairwise))) -> ~(bpr_left_index_bpcpdcm_pairwise = bpr_right_index_bpcpdcm_pairwise) -> (forall bpr_coprime_divisor_bpcpdcm_pairwise_coprime. (exists bpr_coprime_left_factor_bpcpdcm_pairwise_coprime. bpr_left_value_bpcpdcm_pairwise = bpr_coprime_divisor_bpcpdcm_pairwise_coprime * bpr_coprime_left_factor_bpcpdcm_pairwise_coprime) -> (exists bpr_coprime_right_factor_bpcpdcm_pairwise_coprime. bpr_right_value_bpcpdcm_pairwise = bpr_coprime_divisor_bpcpdcm_pairwise_coprime * bpr_coprime_right_factor_bpcpdcm_pairwise_coprime) -> bpr_coprime_divisor_bpcpdcm_pairwise_coprime = 1)) -> (forall bpr_divisor_index_bpcpdcm_pointwise bpr_divisor_value_bpcpdcm_pointwise. (exists bpr_gap_bpcpdcm_pointwise_index_bound. bpr_gap_bpcpdcm_pointwise_index_bound + S (bpr_divisor_index_bpcpdcm_pointwise) = l) -> (((exists bpr_height_bpcpdcm_pointwise_decoded. bpr_height_bpcpdcm_pointwise_decoded + S (bpr_divisor_value_bpcpdcm_pointwise) = S ((S (bpr_divisor_index_bpcpdcm_pointwise)) * c)) /\ exists bpr_quotient_bpcpdcm_pointwise_decoded. b = bpr_quotient_bpcpdcm_pointwise_decoded * S ((S (bpr_divisor_index_bpcpdcm_pointwise)) * c) + (bpr_divisor_value_bpcpdcm_pointwise))) -> exists bpr_quotient_bpcpdcm_pointwise_result. z = bpr_divisor_value_bpcpdcm_pointwise * bpr_quotient_bpcpdcm_pointwise_result) -> (exists ff_u_bpcpdcm_source ff_v_bpcpdcm_source. ((((exists ff_h_bpcpdcm_source_start. ff_h_bpcpdcm_source_start + S (1) = S ((S (0)) * ff_v_bpcpdcm_source)) /\ exists ff_q_bpcpdcm_source_start. ff_u_bpcpdcm_source = ff_q_bpcpdcm_source_start * S ((S (0)) * ff_v_bpcpdcm_source) + (1))) /\ ((((exists ff_h_bpcpdcm_source_terminal. ff_h_bpcpdcm_source_terminal + S (n) = S ((S (l)) * ff_v_bpcpdcm_source)) /\ exists ff_q_bpcpdcm_source_terminal. ff_u_bpcpdcm_source = ff_q_bpcpdcm_source_terminal * S ((S (l)) * ff_v_bpcpdcm_source) + (n))) /\ forall ff_i_bpcpdcm_source. (exists ff_lt_bpcpdcm_source_bound. ff_lt_bpcpdcm_source_bound + S ff_i_bpcpdcm_source = l) -> exists ff_p_bpcpdcm_source ff_r_bpcpdcm_source ff_s_bpcpdcm_source. ((((exists ff_h_bpcpdcm_source_factor. ff_h_bpcpdcm_source_factor + S (ff_p_bpcpdcm_source) = S ((S (ff_i_bpcpdcm_source)) * c)) /\ exists ff_q_bpcpdcm_source_factor. b = ff_q_bpcpdcm_source_factor * S ((S (ff_i_bpcpdcm_source)) * c) + (ff_p_bpcpdcm_source))) /\ ((((exists ff_h_bpcpdcm_source_partial. ff_h_bpcpdcm_source_partial + S (ff_r_bpcpdcm_source) = S ((S (ff_i_bpcpdcm_source)) * ff_v_bpcpdcm_source)) /\ exists ff_q_bpcpdcm_source_partial. ff_u_bpcpdcm_source = ff_q_bpcpdcm_source_partial * S ((S (ff_i_bpcpdcm_source)) * ff_v_bpcpdcm_source) + (ff_r_bpcpdcm_source))) /\ ((((exists ff_h_bpcpdcm_source_successor. ff_h_bpcpdcm_source_successor + S (ff_s_bpcpdcm_source) = S ((S (S ff_i_bpcpdcm_source)) * ff_v_bpcpdcm_source)) /\ exists ff_q_bpcpdcm_source_successor. ff_u_bpcpdcm_source = ff_q_bpcpdcm_source_successor * S ((S (S ff_i_bpcpdcm_source)) * ff_v_bpcpdcm_source) + (ff_s_bpcpdcm_source))) /\ ff_s_bpcpdcm_source = ff_r_bpcpdcm_source * ff_p_bpcpdcm_source)))))) -> (exists bpr_quotient_bpcpdcm_result. z = (n) * bpr_quotient_bpcpdcm_result)

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

130 script commands · 23 reading checkpoints · 9 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 (8)
01Fix variables and assumptionsL1–2

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

  1. L1
    intro b
  2. L2
    intro c
02Induction on lL3–8

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

  1. L3
    induction l
  2. L4
    intro n
  3. L5
    intro z
  4. L6
    intro hpairwise
  5. L7
    intro hpointwise
  6. L8
    intro hproduct
03Establish hnL9–18

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

  1. L9
    have hn : n = 1
  2. L10
    specialize beta_product_zero b
  3. L11
    specialize beta_product_zero c
  4. L12
    specialize beta_product_zero n
  5. L13
    apply beta_product_zero
  6. L14
    exact hproduct
  7. L15
    rewrite hn
  8. L16
    specialize one_multiple z
  9. L17
    exact one_multiple
  10. L18
    intro n
04Fix variables and assumptionsL19–22

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

  1. L19
    intro z
  2. L20
    intro hpairwise
  3. L21
    intro hpointwise
  4. L22
    intro hproduct
05Establish hdecompositionL23–29

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

  1. L23
    have hdecomposition : ∃ p. ∃ r. BetaAt(b,c,l,p) ∧ (Product(b,c,l,r) ∧ n = r · p)Definitions: BetaAt(b,c,l,p)Product(b,c,l,r)Original native command in the exact edition
  2. L24
    specialize beta_product_succ_decompose b
  3. L25
    specialize beta_product_succ_decompose c
  4. L26
    specialize beta_product_succ_decompose l
  5. L27
    specialize beta_product_succ_decompose n
  6. L28
    apply beta_product_succ_decompose
  7. L29
    exact hproduct
06Separate the logical casesL30–33

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

  1. L30
    cases hdecomposition
  2. L31
    cases hdecomposition_witness
  3. L32
    cases hdecomposition_witness_witness
  4. L33
    cases hdecomposition_witness_witness_right
07Establish hprefix_pairwiseL34–43

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

  1. L34
    have hprefix_pairwise · expand full local formula (646 characters)have hprefix_pairwise : ∀ bpr_left_index_bpcpdcm_prefix_pairwise. ∀ bpr_right_index_bpcpdcm_prefix_pairwise. ∀ bpr_left_value_bpcpdcm_prefix_pairwise. ∀ bpr_right_value_bpcpdcm_prefix_pairwise. Lt(bpr_left_index_bpcpdcm_prefix_pairwise,l) → Lt(bpr_right_index_bpcpdcm_prefix_pairwise,l) → BetaAt(b,c,bpr_left_index_bpcpdcm_prefix_pairwise,bpr_left_value_bpcpdcm_prefix_pairwise) → BetaAt(b,c,bpr_right_index_bpcpdcm_prefix_pairwise,bpr_right_value_bpcpdcm_prefix_pairwise) → ¬bpr_left_index_bpcpdcm_prefix_pairwise = bpr_right_index_bpcpdcm_prefix_pairwise → Coprime(bpr_left_value_bpcpdcm_prefix_pairwise,bpr_right_value_bpcpdcm_prefix_pairwise)
    Definitions: Lt(bpr_left_index_bpcpdcm_prefix_pairwise,l)Lt(bpr_right_index_bpcpdcm_prefix_pairwise,l)BetaAt(b,c,bpr_left_index_bpcpdcm_prefix_pairwise,bpr_left_value_bpcpdcm_prefix_pairwise)BetaAt(b,c,bpr_right_index_bpcpdcm_prefix_pairwise,bpr_right_value_bpcpdcm_prefix_pairwise)Coprime(bpr_left_value_bpcpdcm_prefix_pairwise,bpr_right_value_bpcpdcm_prefix_pairwise)Original native command in the exact edition
  2. L35
    intro i
  3. L36
    intro j
  4. L37
    intro p
  5. L38
    intro q
  6. L39
    intro hi
  7. L40
    intro hj
  8. L41
    intro hp
  9. L42
    intro hq
  10. L43
    intro hij
08Use earlier factsL44–53

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

  1. L44
    specialize hpairwise i
  2. L45
    specialize hpairwise j
  3. L46
    specialize hpairwise p
  4. L47
    specialize hpairwise q
  5. L48
    apply hpairwise
  6. L49
    specialize le_succ (S i)
  7. L50
    specialize le_succ l
  8. L51
    apply le_succ
  9. L52
    exact hi
  10. L53
    specialize le_succ (S j)
09Use earlier factsL54–59

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

  1. L54
    specialize le_succ l
  2. L55
    apply le_succ
  3. L56
    exact hj
  4. L57
    exact hp
  5. L58
    exact hq
  6. L59
    exact hij
10Establish hprefix_pointwiseL60–69

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

  1. L60
    have hprefix_pointwise : ∀ bpr_divisor_index_bpcpdcm_prefix_pointwise. ∀ bpr_divisor_value_bpcpdcm_prefix_pointwise. Lt(bpr_divisor_index_bpcpdcm_prefix_pointwise,l) → BetaAt(b,c,bpr_divisor_index_bpcpdcm_prefix_pointwise,bpr_divisor_value_bpcpdcm_prefix_pointwise) → Dvd(bpr_divisor_value_bpcpdcm_prefix_pointwise,z)Definitions: Lt(bpr_divisor_index_bpcpdcm_prefix_pointwise,l)BetaAt(b,c,bpr_divisor_index_bpcpdcm_prefix_pointwise,bpr_divisor_value_bpcpdcm_prefix_pointwise)Dvd(bpr_divisor_value_bpcpdcm_prefix_pointwise,z)Original native command in the exact edition
  2. L61
    intro i
  3. L62
    intro p
  4. L63
    intro hi
  5. L64
    intro hp
  6. L65
    specialize hpointwise i
  7. L66
    specialize hpointwise p
  8. L67
    apply hpointwise
  9. L68
    specialize le_succ (S i)
  10. L69
    specialize le_succ l
11Use earlier factsL70–72

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

  1. L70
    apply le_succ
  2. L71
    exact hi
  3. L72
    exact hp
12Establish hprefix_dividesL73–79

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

  1. L73
    have hprefix_divides : Dvd(x1,z)Definitions: Dvd(x1,z)Original native command in the exact edition
  2. L74
    specialize IH x1
  3. L75
    specialize IH z
  4. L76
    apply IH
  5. L77
    exact hprefix_pairwise
  6. L78
    exact hprefix_pointwise
  7. L79
    exact hdecomposition_witness_witness_right_left
13Establish hlast_dividesL80–86

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

  1. L80
    have hlast_divides : Dvd(x,z)Definitions: Dvd(x,z)Original native command in the exact edition
  2. L81
    specialize hpointwise l
  3. L82
    specialize hpointwise x
  4. L83
    apply hpointwise
  5. L84
    specialize le_refl (S l)
  6. L85
    exact le_refl
  7. L86
    exact hdecomposition_witness_witness_left
14Establish hcoprimeL87–96

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product pointwise coprime.

  1. L87
    have hcoprime : Coprime(x1,x)Definitions: Coprime(x1,x)Original native command in the exact edition
  2. L88
    specialize beta_product_pointwise_coprime x
  3. L89
    specialize beta_product_pointwise_coprime b
  4. L90
    specialize beta_product_pointwise_coprime c
  5. L91
    specialize beta_product_pointwise_coprime l
  6. L92
    specialize beta_product_pointwise_coprime x1
  7. L93
    apply beta_product_pointwise_coprime
  8. L94
    intro i
  9. L95
    intro q
  10. L96
    intro hi
15Fix variables and assumptionsL97–97

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

  1. L97
    intro hq
16Use earlier factsL98–107

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

  1. L98
    specialize hpairwise i
  2. L99
    specialize hpairwise l
  3. L100
    specialize hpairwise q
  4. L101
    specialize hpairwise x
  5. L102
    apply hpairwise
  6. L103
    specialize le_succ (S i)
  7. L104
    specialize le_succ l
  8. L105
    apply le_succ
  9. L106
    exact hi
  10. L107
    specialize le_refl (S l)
17Use earlier factsL108–110

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

  1. L108
    exact le_refl
  2. L109
    exact hq
  3. L110
    exact hdecomposition_witness_witness_left
18Fix variables and assumptionsL111–111

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

  1. L111
    intro hil
19Calculate and transport equalitiesL112–112

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

  1. L112
    rewrite hil at hi
20Use earlier factsL113–116

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

  1. L113
    specialize lt_irrefl_expanded l
  2. L114
    apply lt_irrefl_expanded
  3. L115
    exact hi
  4. L116
    exact hdecomposition_witness_witness_right_left
21Establish hlcmL117–121

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

  1. L117
    have hlcm : Dvd(x1,x1 · x) ∧ Dvd(x,x1 · x) ∧ (∀ y. Dvd(x1,y) → Dvd(x,y) → Dvd(x1 · x,y))Definitions: Dvd(x1,x1 · x)Dvd(x,x1 · x)Dvd(x1,y)Dvd(x,y)Dvd(x1 · x,y)Original native command in the exact edition
  2. L118
    specialize coprime_product_is_lcm x1
  3. L119
    specialize coprime_product_is_lcm x
  4. L120
    apply coprime_product_is_lcm
  5. L121
    exact hcoprime
22Separate the logical casesL122–123

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

  1. L122
    cases hlcm
  2. L123
    cases hlcm_left
23Establish hresultL124–130

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

  1. L124
    have hresult : Dvd(x1 · x,z)Definitions: Dvd(x1 · x,z)Original native command in the exact edition
  2. L125
    specialize hlcm_right z
  3. L126
    apply hlcm_right
  4. L127
    exact hprefix_divides
  5. L128
    exact hlast_divides
  6. L129
    rewrite hdecomposition_witness_witness_right_right
  7. L130
    exact hresult

Library-wide reading audit

Original defined command ledger · 130 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003induction l
  4. 0004intro n
  5. 0005intro z
  6. 0006intro hpairwise
  7. 0007intro hpointwise
  8. 0008intro hproduct
  9. 0009have hn : n = 1
  10. 0010specialize beta_product_zero b
  11. 0011specialize beta_product_zero c
  12. 0012specialize beta_product_zero n
  13. 0013apply beta_product_zero
  14. 0014exact hproduct
  15. 0015rewrite hn
  16. 0016specialize one_multiple z
  17. 0017exact one_multiple
  18. 0018intro n
  19. 0019intro z
  20. 0020intro hpairwise
  21. 0021intro hpointwise
  22. 0022intro hproduct
  23. 0023have hdecomposition : ∃ p. ∃ r. BetaAt(b,c,l,p) ∧ (Product(b,c,l,r) ∧ n = r · p)
    Exact native replay linehave hdecomposition : exists p r. (((exists bpr_height_bpcpdcm_last. bpr_height_bpcpdcm_last + S (p) = S ((S (l)) * c)) /\ exists bpr_quotient_bpcpdcm_last. b = bpr_quotient_bpcpdcm_last * S ((S (l)) * c) + (p))) /\ ((exists ff_u_bpcpdcm_prefix ff_v_bpcpdcm_prefix. ((((exists ff_h_bpcpdcm_prefix_start. ff_h_bpcpdcm_prefix_start + S (1) = S ((S (0)) * ff_v_bpcpdcm_prefix)) /\ exists ff_q_bpcpdcm_prefix_start. ff_u_bpcpdcm_prefix = ff_q_bpcpdcm_prefix_start * S ((S (0)) * ff_v_bpcpdcm_prefix) + (1))) /\ ((((exists ff_h_bpcpdcm_prefix_terminal. ff_h_bpcpdcm_prefix_terminal + S (r) = S ((S (l)) * ff_v_bpcpdcm_prefix)) /\ exists ff_q_bpcpdcm_prefix_terminal. ff_u_bpcpdcm_prefix = ff_q_bpcpdcm_prefix_terminal * S ((S (l)) * ff_v_bpcpdcm_prefix) + (r))) /\ forall ff_i_bpcpdcm_prefix. (exists ff_lt_bpcpdcm_prefix_bound. ff_lt_bpcpdcm_prefix_bound + S ff_i_bpcpdcm_prefix = l) -> exists ff_p_bpcpdcm_prefix ff_r_bpcpdcm_prefix ff_s_bpcpdcm_prefix. ((((exists ff_h_bpcpdcm_prefix_factor. ff_h_bpcpdcm_prefix_factor + S (ff_p_bpcpdcm_prefix) = S ((S (ff_i_bpcpdcm_prefix)) * c)) /\ exists ff_q_bpcpdcm_prefix_factor. b = ff_q_bpcpdcm_prefix_factor * S ((S (ff_i_bpcpdcm_prefix)) * c) + (ff_p_bpcpdcm_prefix))) /\ ((((exists ff_h_bpcpdcm_prefix_partial. ff_h_bpcpdcm_prefix_partial + S (ff_r_bpcpdcm_prefix) = S ((S (ff_i_bpcpdcm_prefix)) * ff_v_bpcpdcm_prefix)) /\ exists ff_q_bpcpdcm_prefix_partial. ff_u_bpcpdcm_prefix = ff_q_bpcpdcm_prefix_partial * S ((S (ff_i_bpcpdcm_prefix)) * ff_v_bpcpdcm_prefix) + (ff_r_bpcpdcm_prefix))) /\ ((((exists ff_h_bpcpdcm_prefix_successor. ff_h_bpcpdcm_prefix_successor + S (ff_s_bpcpdcm_prefix) = S ((S (S ff_i_bpcpdcm_prefix)) * ff_v_bpcpdcm_prefix)) /\ exists ff_q_bpcpdcm_prefix_successor. ff_u_bpcpdcm_prefix = ff_q_bpcpdcm_prefix_successor * S ((S (S ff_i_bpcpdcm_prefix)) * ff_v_bpcpdcm_prefix) + (ff_s_bpcpdcm_prefix))) /\ ff_s_bpcpdcm_prefix = ff_r_bpcpdcm_prefix * ff_p_bpcpdcm_prefix)))))) /\ n = r * p)
  24. 0024specialize beta_product_succ_decompose b
  25. 0025specialize beta_product_succ_decompose c
  26. 0026specialize beta_product_succ_decompose l
  27. 0027specialize beta_product_succ_decompose n
  28. 0028apply beta_product_succ_decompose
  29. 0029exact hproduct
  30. 0030cases hdecomposition
  31. 0031cases hdecomposition_witness
  32. 0032cases hdecomposition_witness_witness
  33. 0033cases hdecomposition_witness_witness_right
  34. 0034have hprefix_pairwise : ∀ bpr_left_index_bpcpdcm_prefix_pairwise. ∀ bpr_right_index_bpcpdcm_prefix_pairwise. ∀ bpr_left_value_bpcpdcm_prefix_pairwise. ∀ bpr_right_value_bpcpdcm_prefix_pairwise. Lt(bpr_left_index_bpcpdcm_prefix_pairwise,l)Lt(bpr_right_index_bpcpdcm_prefix_pairwise,l)BetaAt(b,c,bpr_left_index_bpcpdcm_prefix_pairwise,bpr_left_value_bpcpdcm_prefix_pairwise)BetaAt(b,c,bpr_right_index_bpcpdcm_prefix_pairwise,bpr_right_value_bpcpdcm_prefix_pairwise) → ¬bpr_left_index_bpcpdcm_prefix_pairwise = bpr_right_index_bpcpdcm_prefix_pairwise → Coprime(bpr_left_value_bpcpdcm_prefix_pairwise,bpr_right_value_bpcpdcm_prefix_pairwise)
    Exact native replay linehave hprefix_pairwise : forall bpr_left_index_bpcpdcm_prefix_pairwise bpr_right_index_bpcpdcm_prefix_pairwise bpr_left_value_bpcpdcm_prefix_pairwise bpr_right_value_bpcpdcm_prefix_pairwise. (exists bpr_gap_bpcpdcm_prefix_pairwise_left_bound. bpr_gap_bpcpdcm_prefix_pairwise_left_bound + S (bpr_left_index_bpcpdcm_prefix_pairwise) = l) -> (exists bpr_gap_bpcpdcm_prefix_pairwise_right_bound. bpr_gap_bpcpdcm_prefix_pairwise_right_bound + S (bpr_right_index_bpcpdcm_prefix_pairwise) = l) -> (((exists bpr_height_bpcpdcm_prefix_pairwise_left_at. bpr_height_bpcpdcm_prefix_pairwise_left_at + S (bpr_left_value_bpcpdcm_prefix_pairwise) = S ((S (bpr_left_index_bpcpdcm_prefix_pairwise)) * c)) /\ exists bpr_quotient_bpcpdcm_prefix_pairwise_left_at. b = bpr_quotient_bpcpdcm_prefix_pairwise_left_at * S ((S (bpr_left_index_bpcpdcm_prefix_pairwise)) * c) + (bpr_left_value_bpcpdcm_prefix_pairwise))) -> (((exists bpr_height_bpcpdcm_prefix_pairwise_right_at. bpr_height_bpcpdcm_prefix_pairwise_right_at + S (bpr_right_value_bpcpdcm_prefix_pairwise) = S ((S (bpr_right_index_bpcpdcm_prefix_pairwise)) * c)) /\ exists bpr_quotient_bpcpdcm_prefix_pairwise_right_at. b = bpr_quotient_bpcpdcm_prefix_pairwise_right_at * S ((S (bpr_right_index_bpcpdcm_prefix_pairwise)) * c) + (bpr_right_value_bpcpdcm_prefix_pairwise))) -> ~(bpr_left_index_bpcpdcm_prefix_pairwise = bpr_right_index_bpcpdcm_prefix_pairwise) -> (forall bpr_coprime_divisor_bpcpdcm_prefix_pairwise_coprime. (exists bpr_coprime_left_factor_bpcpdcm_prefix_pairwise_coprime. bpr_left_value_bpcpdcm_prefix_pairwise = bpr_coprime_divisor_bpcpdcm_prefix_pairwise_coprime * bpr_coprime_left_factor_bpcpdcm_prefix_pairwise_coprime) -> (exists bpr_coprime_right_factor_bpcpdcm_prefix_pairwise_coprime. bpr_right_value_bpcpdcm_prefix_pairwise = bpr_coprime_divisor_bpcpdcm_prefix_pairwise_coprime * bpr_coprime_right_factor_bpcpdcm_prefix_pairwise_coprime) -> bpr_coprime_divisor_bpcpdcm_prefix_pairwise_coprime = 1)
  35. 0035intro i
  36. 0036intro j
  37. 0037intro p
  38. 0038intro q
  39. 0039intro hi
  40. 0040intro hj
  41. 0041intro hp
  42. 0042intro hq
  43. 0043intro hij
  44. 0044specialize hpairwise i
  45. 0045specialize hpairwise j
  46. 0046specialize hpairwise p
  47. 0047specialize hpairwise q
  48. 0048apply hpairwise
  49. 0049specialize le_succ (S i)
  50. 0050specialize le_succ l
  51. 0051apply le_succ
  52. 0052exact hi
  53. 0053specialize le_succ (S j)
  54. 0054specialize le_succ l
  55. 0055apply le_succ
  56. 0056exact hj
  57. 0057exact hp
  58. 0058exact hq
  59. 0059exact hij
  60. 0060have hprefix_pointwise : ∀ bpr_divisor_index_bpcpdcm_prefix_pointwise. ∀ bpr_divisor_value_bpcpdcm_prefix_pointwise. Lt(bpr_divisor_index_bpcpdcm_prefix_pointwise,l)BetaAt(b,c,bpr_divisor_index_bpcpdcm_prefix_pointwise,bpr_divisor_value_bpcpdcm_prefix_pointwise)Dvd(bpr_divisor_value_bpcpdcm_prefix_pointwise,z)
    Exact native replay linehave hprefix_pointwise : forall bpr_divisor_index_bpcpdcm_prefix_pointwise bpr_divisor_value_bpcpdcm_prefix_pointwise. (exists bpr_gap_bpcpdcm_prefix_pointwise_index_bound. bpr_gap_bpcpdcm_prefix_pointwise_index_bound + S (bpr_divisor_index_bpcpdcm_prefix_pointwise) = l) -> (((exists bpr_height_bpcpdcm_prefix_pointwise_decoded. bpr_height_bpcpdcm_prefix_pointwise_decoded + S (bpr_divisor_value_bpcpdcm_prefix_pointwise) = S ((S (bpr_divisor_index_bpcpdcm_prefix_pointwise)) * c)) /\ exists bpr_quotient_bpcpdcm_prefix_pointwise_decoded. b = bpr_quotient_bpcpdcm_prefix_pointwise_decoded * S ((S (bpr_divisor_index_bpcpdcm_prefix_pointwise)) * c) + (bpr_divisor_value_bpcpdcm_prefix_pointwise))) -> exists bpr_quotient_bpcpdcm_prefix_pointwise_result. z = bpr_divisor_value_bpcpdcm_prefix_pointwise * bpr_quotient_bpcpdcm_prefix_pointwise_result
  61. 0061intro i
  62. 0062intro p
  63. 0063intro hi
  64. 0064intro hp
  65. 0065specialize hpointwise i
  66. 0066specialize hpointwise p
  67. 0067apply hpointwise
  68. 0068specialize le_succ (S i)
  69. 0069specialize le_succ l
  70. 0070apply le_succ
  71. 0071exact hi
  72. 0072exact hp
  73. 0073have hprefix_divides : Dvd(x1,z)
    Exact native replay linehave hprefix_divides : exists q. z = x1 * q
  74. 0074specialize IH x1
  75. 0075specialize IH z
  76. 0076apply IH
  77. 0077exact hprefix_pairwise
  78. 0078exact hprefix_pointwise
  79. 0079exact hdecomposition_witness_witness_right_left
  80. 0080have hlast_divides : Dvd(x,z)
    Exact native replay linehave hlast_divides : exists q. z = x * q
  81. 0081specialize hpointwise l
  82. 0082specialize hpointwise x
  83. 0083apply hpointwise
  84. 0084specialize le_refl (S l)
  85. 0085exact le_refl
  86. 0086exact hdecomposition_witness_witness_left
  87. 0087have hcoprime : Coprime(x1,x)
    Exact native replay linehave hcoprime : forall bpr_coprime_divisor_bpcpdcm_local_coprime. (exists bpr_coprime_left_factor_bpcpdcm_local_coprime. x1 = bpr_coprime_divisor_bpcpdcm_local_coprime * bpr_coprime_left_factor_bpcpdcm_local_coprime) -> (exists bpr_coprime_right_factor_bpcpdcm_local_coprime. x = bpr_coprime_divisor_bpcpdcm_local_coprime * bpr_coprime_right_factor_bpcpdcm_local_coprime) -> bpr_coprime_divisor_bpcpdcm_local_coprime = 1
  88. 0088specialize beta_product_pointwise_coprime x
  89. 0089specialize beta_product_pointwise_coprime b
  90. 0090specialize beta_product_pointwise_coprime c
  91. 0091specialize beta_product_pointwise_coprime l
  92. 0092specialize beta_product_pointwise_coprime x1
  93. 0093apply beta_product_pointwise_coprime
  94. 0094intro i
  95. 0095intro q
  96. 0096intro hi
  97. 0097intro hq
  98. 0098specialize hpairwise i
  99. 0099specialize hpairwise l
  100. 0100specialize hpairwise q
  101. 0101specialize hpairwise x
  102. 0102apply hpairwise
  103. 0103specialize le_succ (S i)
  104. 0104specialize le_succ l
  105. 0105apply le_succ
  106. 0106exact hi
  107. 0107specialize le_refl (S l)
  108. 0108exact le_refl
  109. 0109exact hq
  110. 0110exact hdecomposition_witness_witness_left
  111. 0111intro hil
  112. 0112rewrite hil at hi
  113. 0113specialize lt_irrefl_expanded l
  114. 0114apply lt_irrefl_expanded
  115. 0115exact hi
  116. 0116exact hdecomposition_witness_witness_right_left
  117. 0117have hlcm : Dvd(x1,x1 · x)Dvd(x,x1 · x) ∧ (∀ y. Dvd(x1,y)Dvd(x,y)Dvd(x1 · x,y))
    Exact native replay linehave hlcm : ((((exists u. x1 * x = x1 * u) /\ exists v. x1 * x = x * v) /\ forall t. (exists a. t = x1 * a) -> (exists d. t = x * d) -> exists q. t = (x1 * x) * q))
  118. 0118specialize coprime_product_is_lcm x1
  119. 0119specialize coprime_product_is_lcm x
  120. 0120apply coprime_product_is_lcm
  121. 0121exact hcoprime
  122. 0122cases hlcm
  123. 0123cases hlcm_left
  124. 0124have hresult : Dvd(x1 · x,z)
    Exact native replay linehave hresult : exists q. z = (x1 * x) * q
  125. 0125specialize hlcm_right z
  126. 0126apply hlcm_right
  127. 0127exact hprefix_divides
  128. 0128exact hlast_divides
  129. 0129rewrite hdecomposition_witness_witness_right_right
  130. 0130exact hresult