PA00AV · theorem

prime_pair_order_choose_append

Alpha v34 checked-use theorem · independently closed; not Stable

Constructively choose one unused inverse orbit, append its two directions adjacently, and preserve the orbit-closed nonendpoint prefix invariants.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.

Statement with defined notation

∀ p. ∀ n. ∀ u. ∀ v. ∀ b. ∀ c. ∀ l. ∀ r. p = S n → Prime(p)InversePrefix(p,n,u,v,n) → n = S r → Lt(S S l,n) → (∀ x. ∀ y. ∀ z. Lt(x,l)BetaAt(b,c,x,y)BetaAt(u,v,y,z)ContainsPrefix(b,c,l,z)) → (∀ x. ∀ y. Lt(x,l)BetaAt(b,c,x,y) → ¬y = 0 ∧ ¬S y = n) → ∃ x. ∃ y. ∃ z. ∃ m. BetaAt(x,y,l,z) ∧ (BetaAt(x,y,S l,m) ∧ (∀ k. ∀ i. Lt(k,l)BetaAt(b,c,k,i)BetaAt(x,y,k,i))) ∧ (Lt(z,n) ∧ (¬z = 0 ∧ ¬S z = n ∧ (¬ContainsPrefix(b,c,l,z) ∧ (BetaAt(u,v,z,m) ∧ (Lt(m,n) ∧ (¬m = 0 ∧ ¬S m = n ∧ (¬z = m ∧ (BetaAt(u,v,m,z) ∧ (¬ContainsPrefix(b,c,l,m) ∧ ((∀ k. ∀ i. ∀ j. Lt(k,S S l)BetaAt(x,y,k,i)BetaAt(u,v,i,j)ContainsPrefix(x,y,S S l,j)) ∧ (∀ k. ∀ i. Lt(k,S S l)BetaAt(x,y,k,i) → ¬i = 0 ∧ ¬S i = n)))))))))))

Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.

Definitions used by this theorem

In the theorem statement

26 occurrences

In local proof propositions

17 occurrences

Exact expanded native-PA statement
forall p n u v b c l r. p = S n -> ((~(p = 1) /\ forall wip_prime_left_choose_orbit_prime wip_prime_right_choose_orbit_prime. p = wip_prime_left_choose_orbit_prime * wip_prime_right_choose_orbit_prime -> wip_prime_left_choose_orbit_prime = 1 \/ wip_prime_right_choose_orbit_prime = 1)) -> (forall wip_index_choose_orbit_full_prefix. (exists wip_gap_choose_orbit_full_prefix_prefix_bound. wip_gap_choose_orbit_full_prefix_prefix_bound + S wip_index_choose_orbit_full_prefix = n) -> exists wip_mate_choose_orbit_full_prefix. ((((exists wip_beta_height_choose_orbit_full_prefix_decoded. wip_beta_height_choose_orbit_full_prefix_decoded + S (wip_mate_choose_orbit_full_prefix) = S ((S (wip_index_choose_orbit_full_prefix)) * v)) /\ exists wip_beta_quotient_choose_orbit_full_prefix_decoded. u = wip_beta_quotient_choose_orbit_full_prefix_decoded * S ((S (wip_index_choose_orbit_full_prefix)) * v) + (wip_mate_choose_orbit_full_prefix))) /\ ((exists wip_gap_choose_orbit_full_prefix_inverse_index_bound. wip_gap_choose_orbit_full_prefix_inverse_index_bound + S wip_index_choose_orbit_full_prefix = n) /\ ((exists wip_gap_choose_orbit_full_prefix_inverse_mate_bound. wip_gap_choose_orbit_full_prefix_inverse_mate_bound + S wip_mate_choose_orbit_full_prefix = n) /\ (exists wip_mod_left_choose_orbit_full_prefix_inverse_mod wip_mod_right_choose_orbit_full_prefix_inverse_mod. ((S wip_index_choose_orbit_full_prefix) * S wip_mate_choose_orbit_full_prefix) + p * wip_mod_left_choose_orbit_full_prefix_inverse_mod = 1 + p * wip_mod_right_choose_orbit_full_prefix_inverse_mod))))) -> n = S r -> (exists h. h + S (S (S l)) = n) -> (forall wpo_position_step_closed_before wpo_source_step_closed_before wpo_mate_step_closed_before. (exists wpo_gap_step_closed_before_position_bound. wpo_gap_step_closed_before_position_bound + S (wpo_position_step_closed_before) = l) -> (((exists wpo_beta_height_step_closed_before_source_entry. wpo_beta_height_step_closed_before_source_entry + S (wpo_source_step_closed_before) = S ((S (wpo_position_step_closed_before)) * c)) /\ exists wpo_beta_quotient_step_closed_before_source_entry. b = wpo_beta_quotient_step_closed_before_source_entry * S ((S (wpo_position_step_closed_before)) * c) + (wpo_source_step_closed_before))) -> (((exists wpo_beta_height_step_closed_before_inverse_entry. wpo_beta_height_step_closed_before_inverse_entry + S (wpo_mate_step_closed_before) = S ((S (wpo_source_step_closed_before)) * v)) /\ exists wpo_beta_quotient_step_closed_before_inverse_entry. u = wpo_beta_quotient_step_closed_before_inverse_entry * S ((S (wpo_source_step_closed_before)) * v) + (wpo_mate_step_closed_before))) -> exists wpo_mate_position_step_closed_before. ((exists wpo_gap_step_closed_before_mate_bound. wpo_gap_step_closed_before_mate_bound + S (wpo_mate_position_step_closed_before) = l) /\ (((exists wpo_beta_height_step_closed_before_mate_entry. wpo_beta_height_step_closed_before_mate_entry + S (wpo_mate_step_closed_before) = S ((S (wpo_mate_position_step_closed_before)) * c)) /\ exists wpo_beta_quotient_step_closed_before_mate_entry. b = wpo_beta_quotient_step_closed_before_mate_entry * S ((S (wpo_mate_position_step_closed_before)) * c) + (wpo_mate_step_closed_before))))) -> (forall wpo_position_step_nonendpoint_before wpo_value_step_nonendpoint_before. (exists wpo_gap_step_nonendpoint_before_position_bound. wpo_gap_step_nonendpoint_before_position_bound + S (wpo_position_step_nonendpoint_before) = l) -> (((exists wpo_beta_height_step_nonendpoint_before_entry. wpo_beta_height_step_nonendpoint_before_entry + S (wpo_value_step_nonendpoint_before) = S ((S (wpo_position_step_nonendpoint_before)) * c)) /\ exists wpo_beta_quotient_step_nonendpoint_before_entry. b = wpo_beta_quotient_step_nonendpoint_before_entry * S ((S (wpo_position_step_nonendpoint_before)) * c) + (wpo_value_step_nonendpoint_before))) -> (~(wpo_value_step_nonendpoint_before = 0) /\ ~((S wpo_value_step_nonendpoint_before) = n))) -> (exists z d i j. ((((((exists wpo_beta_height_step_trace_first. wpo_beta_height_step_trace_first + S (i) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_step_trace_first. z = wpo_beta_quotient_step_trace_first * S ((S (l)) * d) + (i))) /\ ((((exists wpo_beta_height_step_trace_second. wpo_beta_height_step_trace_second + S (j) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_step_trace_second. z = wpo_beta_quotient_step_trace_second * S ((S (S (l))) * d) + (j))) /\ (forall wpo_old_index_step_trace wpo_old_value_step_trace. (exists wpo_gap_step_trace_old_bound. wpo_gap_step_trace_old_bound + S (wpo_old_index_step_trace) = l) -> (((exists wpo_beta_height_step_trace_old_entry. wpo_beta_height_step_trace_old_entry + S (wpo_old_value_step_trace) = S ((S (wpo_old_index_step_trace)) * c)) /\ exists wpo_beta_quotient_step_trace_old_entry. b = wpo_beta_quotient_step_trace_old_entry * S ((S (wpo_old_index_step_trace)) * c) + (wpo_old_value_step_trace))) -> (((exists wpo_beta_height_step_trace_new_entry. wpo_beta_height_step_trace_new_entry + S (wpo_old_value_step_trace) = S ((S (wpo_old_index_step_trace)) * d)) /\ exists wpo_beta_quotient_step_trace_new_entry. z = wpo_beta_quotient_step_trace_new_entry * S ((S (wpo_old_index_step_trace)) * d) + (wpo_old_value_step_trace))))))) /\ ((exists wpo_gap_choose_orbit_source_bound. wpo_gap_choose_orbit_source_bound + S (i) = n) /\ ((~(i = 0) /\ ~((S i) = n)) /\ ((~(exists wpo_index_choose_orbit_source_omit_contains. ((exists wpo_gap_choose_orbit_source_omit_contains_bound. wpo_gap_choose_orbit_source_omit_contains_bound + S (wpo_index_choose_orbit_source_omit_contains) = l) /\ (((exists wpo_beta_height_choose_orbit_source_omit_contains_entry. wpo_beta_height_choose_orbit_source_omit_contains_entry + S (i) = S ((S (wpo_index_choose_orbit_source_omit_contains)) * c)) /\ exists wpo_beta_quotient_choose_orbit_source_omit_contains_entry. b = wpo_beta_quotient_choose_orbit_source_omit_contains_entry * S ((S (wpo_index_choose_orbit_source_omit_contains)) * c) + (i)))))) /\ ((((exists wpo_beta_height_choose_orbit_forward. wpo_beta_height_choose_orbit_forward + S (j) = S ((S (i)) * v)) /\ exists wpo_beta_quotient_choose_orbit_forward. u = wpo_beta_quotient_choose_orbit_forward * S ((S (i)) * v) + (j))) /\ ((exists wpo_gap_choose_orbit_mate_bound. wpo_gap_choose_orbit_mate_bound + S (j) = n) /\ ((~(j = 0) /\ ~((S j) = n)) /\ (~(i = j) /\ ((((exists wpo_beta_height_choose_orbit_back. wpo_beta_height_choose_orbit_back + S (i) = S ((S (j)) * v)) /\ exists wpo_beta_quotient_choose_orbit_back. u = wpo_beta_quotient_choose_orbit_back * S ((S (j)) * v) + (i))) /\ ((~(exists wpo_index_step_mate_omit_contains. ((exists wpo_gap_step_mate_omit_contains_bound. wpo_gap_step_mate_omit_contains_bound + S (wpo_index_step_mate_omit_contains) = l) /\ (((exists wpo_beta_height_step_mate_omit_contains_entry. wpo_beta_height_step_mate_omit_contains_entry + S (j) = S ((S (wpo_index_step_mate_omit_contains)) * c)) /\ exists wpo_beta_quotient_step_mate_omit_contains_entry. b = wpo_beta_quotient_step_mate_omit_contains_entry * S ((S (wpo_index_step_mate_omit_contains)) * c) + (j)))))) /\ ((forall wpo_position_step_closed_after wpo_source_step_closed_after wpo_mate_step_closed_after. (exists wpo_gap_step_closed_after_position_bound. wpo_gap_step_closed_after_position_bound + S (wpo_position_step_closed_after) = S (S l)) -> (((exists wpo_beta_height_step_closed_after_source_entry. wpo_beta_height_step_closed_after_source_entry + S (wpo_source_step_closed_after) = S ((S (wpo_position_step_closed_after)) * d)) /\ exists wpo_beta_quotient_step_closed_after_source_entry. z = wpo_beta_quotient_step_closed_after_source_entry * S ((S (wpo_position_step_closed_after)) * d) + (wpo_source_step_closed_after))) -> (((exists wpo_beta_height_step_closed_after_inverse_entry. wpo_beta_height_step_closed_after_inverse_entry + S (wpo_mate_step_closed_after) = S ((S (wpo_source_step_closed_after)) * v)) /\ exists wpo_beta_quotient_step_closed_after_inverse_entry. u = wpo_beta_quotient_step_closed_after_inverse_entry * S ((S (wpo_source_step_closed_after)) * v) + (wpo_mate_step_closed_after))) -> exists wpo_mate_position_step_closed_after. ((exists wpo_gap_step_closed_after_mate_bound. wpo_gap_step_closed_after_mate_bound + S (wpo_mate_position_step_closed_after) = S (S l)) /\ (((exists wpo_beta_height_step_closed_after_mate_entry. wpo_beta_height_step_closed_after_mate_entry + S (wpo_mate_step_closed_after) = S ((S (wpo_mate_position_step_closed_after)) * d)) /\ exists wpo_beta_quotient_step_closed_after_mate_entry. z = wpo_beta_quotient_step_closed_after_mate_entry * S ((S (wpo_mate_position_step_closed_after)) * d) + (wpo_mate_step_closed_after))))) /\ (forall wpo_position_step_nonendpoint_after wpo_value_step_nonendpoint_after. (exists wpo_gap_step_nonendpoint_after_position_bound. wpo_gap_step_nonendpoint_after_position_bound + S (wpo_position_step_nonendpoint_after) = S (S l)) -> (((exists wpo_beta_height_step_nonendpoint_after_entry. wpo_beta_height_step_nonendpoint_after_entry + S (wpo_value_step_nonendpoint_after) = S ((S (wpo_position_step_nonendpoint_after)) * d)) /\ exists wpo_beta_quotient_step_nonendpoint_after_entry. z = wpo_beta_quotient_step_nonendpoint_after_entry * S ((S (wpo_position_step_nonendpoint_after)) * d) + (wpo_value_step_nonendpoint_after))) -> (~(wpo_value_step_nonendpoint_after = 0) /\ ~((S wpo_value_step_nonendpoint_after) = n)))))))))))))))

Proof neighborhood

Direct theorem prerequisites

Direct theorem dependents

Definition-aware tactic body

Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.

Read the argument

Proof checkpoints

118 script commands · 36 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 (5)
01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro n
  3. L3
    intro u
  4. L4
    intro v
  5. L5
    intro b
  6. L6
    intro c
  7. L7
    intro l
  8. L8
    intro r
  9. L9
    intro hpn
  10. L10
    intro hp
02Fix variables and assumptionsL11–15

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

  1. L11
    intro hprefix
  2. L12
    intro hnr
  3. L13
    intro hshort
  4. L14
    intro hclosed
  5. L15
    intro hnonendpoint
03Establish horbitL16–25

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

  1. L16
    have horbit : ∃ i. ∃ j. Lt(i,n) ∧ (¬i = 0 ∧ ¬S i = n ∧ (¬ContainsPrefix(b,c,l,i) ∧ (BetaAt(u,v,i,j) ∧ (Lt(j,n) ∧ (¬j = 0 ∧ ¬S j = n ∧ (¬i = j ∧ BetaAt(u,v,j,i)))))))Definitions: Lt(i,n)ContainsPrefix(b,c,l,i)BetaAt(u,v,i,j)Lt(j,n)BetaAt(u,v,j,i)Original native command in the exact edition
  2. L17
    specialize prime_choose_unused_nonendpoint_orbit p
  3. L18
    specialize prime_choose_unused_nonendpoint_orbit n
  4. L19
    specialize prime_choose_unused_nonendpoint_orbit u
  5. L20
    specialize prime_choose_unused_nonendpoint_orbit v
  6. L21
    specialize prime_choose_unused_nonendpoint_orbit b
  7. L22
    specialize prime_choose_unused_nonendpoint_orbit c
  8. L23
    specialize prime_choose_unused_nonendpoint_orbit l
  9. L24
    specialize prime_choose_unused_nonendpoint_orbit r
  10. L25
    apply prime_choose_unused_nonendpoint_orbit
04Use earlier factsL26–30

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

  1. L26
    exact hpn
  2. L27
    exact hp
  3. L28
    exact hprefix
  4. L29
    exact hnr
  5. L30
    exact hshort
05Separate the logical casesL31–39

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

  1. L31
    cases horbit
  2. L32
    cases horbit_witness
  3. L33
    cases horbit_witness_witness
  4. L34
    cases horbit_witness_witness_right
  5. L35
    cases horbit_witness_witness_right_right
  6. L36
    cases horbit_witness_witness_right_right_right
  7. L37
    cases horbit_witness_witness_right_right_right_right
  8. L38
    cases horbit_witness_witness_right_right_right_right_right
  9. L39
    cases horbit_witness_witness_right_right_right_right_right_right
06Establish hmate_omitL40–49

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply orbit closed unused mate.

  1. L40
    have hmate_omit : ¬ContainsPrefix(b,c,l,x1)Definitions: ContainsPrefix(b,c,l,x1)Original native command in the exact edition
  2. L41
    intro hmate_contains
  3. L42
    specialize orbit_closed_unused_mate u
  4. L43
    specialize orbit_closed_unused_mate v
  5. L44
    specialize orbit_closed_unused_mate b
  6. L45
    specialize orbit_closed_unused_mate c
  7. L46
    specialize orbit_closed_unused_mate l
  8. L47
    specialize orbit_closed_unused_mate x
  9. L48
    specialize orbit_closed_unused_mate x1
  10. L49
    apply orbit_closed_unused_mate
07Use earlier factsL50–53

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

  1. L50
    exact hclosed
  2. L51
    exact horbit_witness_witness_right_right_left
  3. L52
    exact horbit_witness_witness_right_right_right_right_right_right_right
  4. L53
    exact hmate_contains
08Establish happendL54–60

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

  1. L54
    have happend : ∃ z. ∃ d. BetaAt(z,d,l,x) ∧ (BetaAt(z,d,S l,x1) ∧ (∀ y. ∀ n. Lt(y,l) → BetaAt(b,c,y,n) → BetaAt(z,d,y,n)))Definitions: BetaAt(z,d,l,x)BetaAt(z,d,S l,x1)Lt(y,l)BetaAt(b,c,y,n)BetaAt(z,d,y,n)Original native command in the exact edition
  2. L55
    specialize beta_prefix_append_two_exists b
  3. L56
    specialize beta_prefix_append_two_exists c
  4. L57
    specialize beta_prefix_append_two_exists l
  5. L58
    specialize beta_prefix_append_two_exists x
  6. L59
    specialize beta_prefix_append_two_exists x1
  7. L60
    exact beta_prefix_append_two_exists
09Separate the logical casesL61–62

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

  1. L61
    cases happend
  2. L62
    cases happend_witness
10Establish hclosed_afterL63–72

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

  1. L63
    have hclosed_after : ∀ wpo_position_step_closed_after_x. ∀ wpo_source_step_closed_after_x. ∀ wpo_mate_step_closed_after_x. Lt(wpo_position_step_closed_after_x,S S l) → BetaAt(x2,x3,wpo_position_step_closed_after_x,wpo_source_step_closed_after_x) → BetaAt(u,v,wpo_source_step_closed_after_x,wpo_mate_step_closed_after_x) → ContainsPrefix(x2,x3,S S l,wpo_mate_step_closed_after_x)Definitions: Lt(wpo_position_step_closed_after_x,S S l)BetaAt(x2,x3,wpo_position_step_closed_after_x,wpo_source_step_closed_after_x)BetaAt(u,v,wpo_source_step_closed_after_x,wpo_mate_step_closed_after_x)ContainsPrefix(x2,x3,S S l,wpo_mate_step_closed_after_x)Original native command in the exact edition
  2. L64
    specialize beta_prefix_append_two_orbit_closed u
  3. L65
    specialize beta_prefix_append_two_orbit_closed v
  4. L66
    specialize beta_prefix_append_two_orbit_closed b
  5. L67
    specialize beta_prefix_append_two_orbit_closed c
  6. L68
    specialize beta_prefix_append_two_orbit_closed x2
  7. L69
    specialize beta_prefix_append_two_orbit_closed x3
  8. L70
    specialize beta_prefix_append_two_orbit_closed l
  9. L71
    specialize beta_prefix_append_two_orbit_closed x
  10. L72
    specialize beta_prefix_append_two_orbit_closed x1
11Use earlier factsL73–77

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

  1. L73
    apply beta_prefix_append_two_orbit_closed
  2. L74
    exact happend_witness_witness
  3. L75
    exact hclosed
  4. L76
    exact horbit_witness_witness_right_right_right_left
  5. L77
    exact horbit_witness_witness_right_right_right_right_right_right_right
12Establish hnonendpoint_afterL78–87

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix append two nonendpoint.

  1. L78
    have hnonendpoint_after : ∀ wpo_position_step_nonendpoint_after_x. ∀ wpo_value_step_nonendpoint_after_x. Lt(wpo_position_step_nonendpoint_after_x,S S l) → BetaAt(x2,x3,wpo_position_step_nonendpoint_after_x,wpo_value_step_nonendpoint_after_x) → ¬wpo_value_step_nonendpoint_after_x = 0 ∧ ¬S wpo_value_step_nonendpoint_after_x = nDefinitions: Lt(wpo_position_step_nonendpoint_after_x,S S l)BetaAt(x2,x3,wpo_position_step_nonendpoint_after_x,wpo_value_step_nonendpoint_after_x)Original native command in the exact edition
  2. L79
    specialize beta_prefix_append_two_nonendpoint b
  3. L80
    specialize beta_prefix_append_two_nonendpoint c
  4. L81
    specialize beta_prefix_append_two_nonendpoint x2
  5. L82
    specialize beta_prefix_append_two_nonendpoint x3
  6. L83
    specialize beta_prefix_append_two_nonendpoint l
  7. L84
    specialize beta_prefix_append_two_nonendpoint n
  8. L85
    specialize beta_prefix_append_two_nonendpoint x
  9. L86
    specialize beta_prefix_append_two_nonendpoint x1
  10. L87
    apply beta_prefix_append_two_nonendpoint
13Use earlier factsL88–91

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

  1. L88
    exact happend_witness_witness
  2. L89
    exact hnonendpoint
  3. L90
    exact horbit_witness_witness_right_left
  4. L91
    exact horbit_witness_witness_right_right_right_right_right_left
14Construct an explicit witnessL92–95

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

  1. L92
    exists x2
  2. L93
    exists x3
  3. L94
    exists x
  4. L95
    exists x1
15Separate the logical casesL96–96

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

  1. L96
    split
16Use earlier factsL97–97

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

  1. L97
    exact happend_witness_witness
17Separate the logical casesL98–98

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

  1. L98
    split
18Use earlier factsL99–99

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

  1. L99
    exact horbit_witness_witness_left
19Separate the logical casesL100–100

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

  1. L100
    split
20Use earlier factsL101–101

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

  1. L101
    exact horbit_witness_witness_right_left
21Separate the logical casesL102–102

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

  1. L102
    split
22Use earlier factsL103–103

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

  1. L103
    exact horbit_witness_witness_right_right_left
23Separate the logical casesL104–104

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

  1. L104
    split
24Use earlier factsL105–105

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

  1. L105
    exact horbit_witness_witness_right_right_right_left
25Separate the logical casesL106–106

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

  1. L106
    split
26Use earlier factsL107–107

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

  1. L107
    exact horbit_witness_witness_right_right_right_right_left
27Separate the logical casesL108–108

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

  1. L108
    split
28Use earlier factsL109–109

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

  1. L109
    exact horbit_witness_witness_right_right_right_right_right_left
29Separate the logical casesL110–110

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

  1. L110
    split
30Use earlier factsL111–111

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

  1. L111
    exact horbit_witness_witness_right_right_right_right_right_right_left
31Separate the logical casesL112–112

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

  1. L112
    split
32Use earlier factsL113–113

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

  1. L113
    exact horbit_witness_witness_right_right_right_right_right_right_right
33Separate the logical casesL114–114

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

  1. L114
    split
34Use earlier factsL115–115

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

  1. L115
    exact hmate_omit
35Separate the logical casesL116–116

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

  1. L116
    split
36Use earlier factsL117–118

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

  1. L117
    exact hclosed_after
  2. L118
    exact hnonendpoint_after

Library-wide reading audit

Original defined command ledger · 118 lines
  1. 0001intro p
  2. 0002intro n
  3. 0003intro u
  4. 0004intro v
  5. 0005intro b
  6. 0006intro c
  7. 0007intro l
  8. 0008intro r
  9. 0009intro hpn
  10. 0010intro hp
  11. 0011intro hprefix
  12. 0012intro hnr
  13. 0013intro hshort
  14. 0014intro hclosed
  15. 0015intro hnonendpoint
  16. 0016have horbit : ∃ i. ∃ j. Lt(i,n) ∧ (¬i = 0 ∧ ¬S i = n ∧ (¬ContainsPrefix(b,c,l,i) ∧ (BetaAt(u,v,i,j) ∧ (Lt(j,n) ∧ (¬j = 0 ∧ ¬S j = n ∧ (¬i = j ∧ BetaAt(u,v,j,i)))))))
    Exact native replay linehave horbit : exists i j. ((exists wpo_gap_choose_orbit_source_bound. wpo_gap_choose_orbit_source_bound + S (i) = n) /\ ((~(i = 0) /\ ~((S i) = n)) /\ ((~(exists wpo_index_choose_orbit_source_omit_contains. ((exists wpo_gap_choose_orbit_source_omit_contains_bound. wpo_gap_choose_orbit_source_omit_contains_bound + S (wpo_index_choose_orbit_source_omit_contains) = l) /\ (((exists wpo_beta_height_choose_orbit_source_omit_contains_entry. wpo_beta_height_choose_orbit_source_omit_contains_entry + S (i) = S ((S (wpo_index_choose_orbit_source_omit_contains)) * c)) /\ exists wpo_beta_quotient_choose_orbit_source_omit_contains_entry. b = wpo_beta_quotient_choose_orbit_source_omit_contains_entry * S ((S (wpo_index_choose_orbit_source_omit_contains)) * c) + (i)))))) /\ ((((exists wpo_beta_height_choose_orbit_forward. wpo_beta_height_choose_orbit_forward + S (j) = S ((S (i)) * v)) /\ exists wpo_beta_quotient_choose_orbit_forward. u = wpo_beta_quotient_choose_orbit_forward * S ((S (i)) * v) + (j))) /\ ((exists wpo_gap_choose_orbit_mate_bound. wpo_gap_choose_orbit_mate_bound + S (j) = n) /\ ((~(j = 0) /\ ~((S j) = n)) /\ (~(i = j) /\ (((exists wpo_beta_height_choose_orbit_back. wpo_beta_height_choose_orbit_back + S (i) = S ((S (j)) * v)) /\ exists wpo_beta_quotient_choose_orbit_back. u = wpo_beta_quotient_choose_orbit_back * S ((S (j)) * v) + (i))))))))))
  17. 0017specialize prime_choose_unused_nonendpoint_orbit p
  18. 0018specialize prime_choose_unused_nonendpoint_orbit n
  19. 0019specialize prime_choose_unused_nonendpoint_orbit u
  20. 0020specialize prime_choose_unused_nonendpoint_orbit v
  21. 0021specialize prime_choose_unused_nonendpoint_orbit b
  22. 0022specialize prime_choose_unused_nonendpoint_orbit c
  23. 0023specialize prime_choose_unused_nonendpoint_orbit l
  24. 0024specialize prime_choose_unused_nonendpoint_orbit r
  25. 0025apply prime_choose_unused_nonendpoint_orbit
  26. 0026exact hpn
  27. 0027exact hp
  28. 0028exact hprefix
  29. 0029exact hnr
  30. 0030exact hshort
  31. 0031cases horbit
  32. 0032cases horbit_witness
  33. 0033cases horbit_witness_witness
  34. 0034cases horbit_witness_witness_right
  35. 0035cases horbit_witness_witness_right_right
  36. 0036cases horbit_witness_witness_right_right_right
  37. 0037cases horbit_witness_witness_right_right_right_right
  38. 0038cases horbit_witness_witness_right_right_right_right_right
  39. 0039cases horbit_witness_witness_right_right_right_right_right_right
  40. 0040have hmate_omit : ¬ContainsPrefix(b,c,l,x1)
    Exact native replay linehave hmate_omit : ~(exists wpo_index_step_mate_omit_x1_contains. ((exists wpo_gap_step_mate_omit_x1_contains_bound. wpo_gap_step_mate_omit_x1_contains_bound + S (wpo_index_step_mate_omit_x1_contains) = l) /\ (((exists wpo_beta_height_step_mate_omit_x1_contains_entry. wpo_beta_height_step_mate_omit_x1_contains_entry + S (x1) = S ((S (wpo_index_step_mate_omit_x1_contains)) * c)) /\ exists wpo_beta_quotient_step_mate_omit_x1_contains_entry. b = wpo_beta_quotient_step_mate_omit_x1_contains_entry * S ((S (wpo_index_step_mate_omit_x1_contains)) * c) + (x1)))))
  41. 0041intro hmate_contains
  42. 0042specialize orbit_closed_unused_mate u
  43. 0043specialize orbit_closed_unused_mate v
  44. 0044specialize orbit_closed_unused_mate b
  45. 0045specialize orbit_closed_unused_mate c
  46. 0046specialize orbit_closed_unused_mate l
  47. 0047specialize orbit_closed_unused_mate x
  48. 0048specialize orbit_closed_unused_mate x1
  49. 0049apply orbit_closed_unused_mate
  50. 0050exact hclosed
  51. 0051exact horbit_witness_witness_right_right_left
  52. 0052exact horbit_witness_witness_right_right_right_right_right_right_right
  53. 0053exact hmate_contains
  54. 0054have happend : ∃ z. ∃ d. BetaAt(z,d,l,x) ∧ (BetaAt(z,d,S l,x1) ∧ (∀ y. ∀ n. Lt(y,l)BetaAt(b,c,y,n)BetaAt(z,d,y,n)))
    Exact native replay linehave happend : exists z d. ((((exists wpo_beta_height_step_append_x_first. wpo_beta_height_step_append_x_first + S (x) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_step_append_x_first. z = wpo_beta_quotient_step_append_x_first * S ((S (l)) * d) + (x))) /\ ((((exists wpo_beta_height_step_append_x_second. wpo_beta_height_step_append_x_second + S (x1) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_step_append_x_second. z = wpo_beta_quotient_step_append_x_second * S ((S (S (l))) * d) + (x1))) /\ (forall wpo_old_index_step_append_x wpo_old_value_step_append_x. (exists wpo_gap_step_append_x_old_bound. wpo_gap_step_append_x_old_bound + S (wpo_old_index_step_append_x) = l) -> (((exists wpo_beta_height_step_append_x_old_entry. wpo_beta_height_step_append_x_old_entry + S (wpo_old_value_step_append_x) = S ((S (wpo_old_index_step_append_x)) * c)) /\ exists wpo_beta_quotient_step_append_x_old_entry. b = wpo_beta_quotient_step_append_x_old_entry * S ((S (wpo_old_index_step_append_x)) * c) + (wpo_old_value_step_append_x))) -> (((exists wpo_beta_height_step_append_x_new_entry. wpo_beta_height_step_append_x_new_entry + S (wpo_old_value_step_append_x) = S ((S (wpo_old_index_step_append_x)) * d)) /\ exists wpo_beta_quotient_step_append_x_new_entry. z = wpo_beta_quotient_step_append_x_new_entry * S ((S (wpo_old_index_step_append_x)) * d) + (wpo_old_value_step_append_x))))))
  55. 0055specialize beta_prefix_append_two_exists b
  56. 0056specialize beta_prefix_append_two_exists c
  57. 0057specialize beta_prefix_append_two_exists l
  58. 0058specialize beta_prefix_append_two_exists x
  59. 0059specialize beta_prefix_append_two_exists x1
  60. 0060exact beta_prefix_append_two_exists
  61. 0061cases happend
  62. 0062cases happend_witness
  63. 0063have hclosed_after : ∀ wpo_position_step_closed_after_x. ∀ wpo_source_step_closed_after_x. ∀ wpo_mate_step_closed_after_x. Lt(wpo_position_step_closed_after_x,S S l)BetaAt(x2,x3,wpo_position_step_closed_after_x,wpo_source_step_closed_after_x)BetaAt(u,v,wpo_source_step_closed_after_x,wpo_mate_step_closed_after_x)ContainsPrefix(x2,x3,S S l,wpo_mate_step_closed_after_x)
    Exact native replay linehave hclosed_after : forall wpo_position_step_closed_after_x wpo_source_step_closed_after_x wpo_mate_step_closed_after_x. (exists wpo_gap_step_closed_after_x_position_bound. wpo_gap_step_closed_after_x_position_bound + S (wpo_position_step_closed_after_x) = S (S l)) -> (((exists wpo_beta_height_step_closed_after_x_source_entry. wpo_beta_height_step_closed_after_x_source_entry + S (wpo_source_step_closed_after_x) = S ((S (wpo_position_step_closed_after_x)) * x3)) /\ exists wpo_beta_quotient_step_closed_after_x_source_entry. x2 = wpo_beta_quotient_step_closed_after_x_source_entry * S ((S (wpo_position_step_closed_after_x)) * x3) + (wpo_source_step_closed_after_x))) -> (((exists wpo_beta_height_step_closed_after_x_inverse_entry. wpo_beta_height_step_closed_after_x_inverse_entry + S (wpo_mate_step_closed_after_x) = S ((S (wpo_source_step_closed_after_x)) * v)) /\ exists wpo_beta_quotient_step_closed_after_x_inverse_entry. u = wpo_beta_quotient_step_closed_after_x_inverse_entry * S ((S (wpo_source_step_closed_after_x)) * v) + (wpo_mate_step_closed_after_x))) -> exists wpo_mate_position_step_closed_after_x. ((exists wpo_gap_step_closed_after_x_mate_bound. wpo_gap_step_closed_after_x_mate_bound + S (wpo_mate_position_step_closed_after_x) = S (S l)) /\ (((exists wpo_beta_height_step_closed_after_x_mate_entry. wpo_beta_height_step_closed_after_x_mate_entry + S (wpo_mate_step_closed_after_x) = S ((S (wpo_mate_position_step_closed_after_x)) * x3)) /\ exists wpo_beta_quotient_step_closed_after_x_mate_entry. x2 = wpo_beta_quotient_step_closed_after_x_mate_entry * S ((S (wpo_mate_position_step_closed_after_x)) * x3) + (wpo_mate_step_closed_after_x))))
  64. 0064specialize beta_prefix_append_two_orbit_closed u
  65. 0065specialize beta_prefix_append_two_orbit_closed v
  66. 0066specialize beta_prefix_append_two_orbit_closed b
  67. 0067specialize beta_prefix_append_two_orbit_closed c
  68. 0068specialize beta_prefix_append_two_orbit_closed x2
  69. 0069specialize beta_prefix_append_two_orbit_closed x3
  70. 0070specialize beta_prefix_append_two_orbit_closed l
  71. 0071specialize beta_prefix_append_two_orbit_closed x
  72. 0072specialize beta_prefix_append_two_orbit_closed x1
  73. 0073apply beta_prefix_append_two_orbit_closed
  74. 0074exact happend_witness_witness
  75. 0075exact hclosed
  76. 0076exact horbit_witness_witness_right_right_right_left
  77. 0077exact horbit_witness_witness_right_right_right_right_right_right_right
  78. 0078have hnonendpoint_after : ∀ wpo_position_step_nonendpoint_after_x. ∀ wpo_value_step_nonendpoint_after_x. Lt(wpo_position_step_nonendpoint_after_x,S S l)BetaAt(x2,x3,wpo_position_step_nonendpoint_after_x,wpo_value_step_nonendpoint_after_x) → ¬wpo_value_step_nonendpoint_after_x = 0 ∧ ¬S wpo_value_step_nonendpoint_after_x = n
    Exact native replay linehave hnonendpoint_after : forall wpo_position_step_nonendpoint_after_x wpo_value_step_nonendpoint_after_x. (exists wpo_gap_step_nonendpoint_after_x_position_bound. wpo_gap_step_nonendpoint_after_x_position_bound + S (wpo_position_step_nonendpoint_after_x) = S (S l)) -> (((exists wpo_beta_height_step_nonendpoint_after_x_entry. wpo_beta_height_step_nonendpoint_after_x_entry + S (wpo_value_step_nonendpoint_after_x) = S ((S (wpo_position_step_nonendpoint_after_x)) * x3)) /\ exists wpo_beta_quotient_step_nonendpoint_after_x_entry. x2 = wpo_beta_quotient_step_nonendpoint_after_x_entry * S ((S (wpo_position_step_nonendpoint_after_x)) * x3) + (wpo_value_step_nonendpoint_after_x))) -> (~(wpo_value_step_nonendpoint_after_x = 0) /\ ~((S wpo_value_step_nonendpoint_after_x) = n))
  79. 0079specialize beta_prefix_append_two_nonendpoint b
  80. 0080specialize beta_prefix_append_two_nonendpoint c
  81. 0081specialize beta_prefix_append_two_nonendpoint x2
  82. 0082specialize beta_prefix_append_two_nonendpoint x3
  83. 0083specialize beta_prefix_append_two_nonendpoint l
  84. 0084specialize beta_prefix_append_two_nonendpoint n
  85. 0085specialize beta_prefix_append_two_nonendpoint x
  86. 0086specialize beta_prefix_append_two_nonendpoint x1
  87. 0087apply beta_prefix_append_two_nonendpoint
  88. 0088exact happend_witness_witness
  89. 0089exact hnonendpoint
  90. 0090exact horbit_witness_witness_right_left
  91. 0091exact horbit_witness_witness_right_right_right_right_right_left
  92. 0092exists x2
  93. 0093exists x3
  94. 0094exists x
  95. 0095exists x1
  96. 0096split
  97. 0097exact happend_witness_witness
  98. 0098split
  99. 0099exact horbit_witness_witness_left
  100. 0100split
  101. 0101exact horbit_witness_witness_right_left
  102. 0102split
  103. 0103exact horbit_witness_witness_right_right_left
  104. 0104split
  105. 0105exact horbit_witness_witness_right_right_right_left
  106. 0106split
  107. 0107exact horbit_witness_witness_right_right_right_right_left
  108. 0108split
  109. 0109exact horbit_witness_witness_right_right_right_right_right_left
  110. 0110split
  111. 0111exact horbit_witness_witness_right_right_right_right_right_right_left
  112. 0112split
  113. 0113exact horbit_witness_witness_right_right_right_right_right_right_right
  114. 0114split
  115. 0115exact hmate_omit
  116. 0116split
  117. 0117exact hclosed_after
  118. 0118exact hnonendpoint_after