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. ∀ b. ∀ c. ∀ l. p = S n → Prime(p) → Lt(l,n) → InversePrefix(p,n,b,c,l) → ∃ x. ∃ y. InversePrefix(p,n,x,y,S l)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
4 occurrences
In local proof propositions
5 occurrences
Exact expanded native-PA statement
forall p n b c l. p = S n -> ((~(p = 1) /\ forall wip_prime_left_extend_prime wip_prime_right_extend_prime. p = wip_prime_left_extend_prime * wip_prime_right_extend_prime -> wip_prime_left_extend_prime = 1 \/ wip_prime_right_extend_prime = 1)) -> (exists wip_gap_extend_length. wip_gap_extend_length + S l = n) -> (forall wip_index_extend_before. (exists wip_gap_extend_before_prefix_bound. wip_gap_extend_before_prefix_bound + S wip_index_extend_before = l) -> exists wip_mate_extend_before. ((((exists wip_beta_height_extend_before_decoded. wip_beta_height_extend_before_decoded + S (wip_mate_extend_before) = S ((S (wip_index_extend_before)) * c)) /\ exists wip_beta_quotient_extend_before_decoded. b = wip_beta_quotient_extend_before_decoded * S ((S (wip_index_extend_before)) * c) + (wip_mate_extend_before))) /\ ((exists wip_gap_extend_before_inverse_index_bound. wip_gap_extend_before_inverse_index_bound + S wip_index_extend_before = n) /\ ((exists wip_gap_extend_before_inverse_mate_bound. wip_gap_extend_before_inverse_mate_bound + S wip_mate_extend_before = n) /\ (exists wip_mod_left_extend_before_inverse_mod wip_mod_right_extend_before_inverse_mod. ((S wip_index_extend_before) * S wip_mate_extend_before) + p * wip_mod_left_extend_before_inverse_mod = 1 + p * wip_mod_right_extend_before_inverse_mod))))) -> exists z d. (forall wip_index_extend_after. (exists wip_gap_extend_after_prefix_bound. wip_gap_extend_after_prefix_bound + S wip_index_extend_after = S l) -> exists wip_mate_extend_after. ((((exists wip_beta_height_extend_after_decoded. wip_beta_height_extend_after_decoded + S (wip_mate_extend_after) = S ((S (wip_index_extend_after)) * d)) /\ exists wip_beta_quotient_extend_after_decoded. z = wip_beta_quotient_extend_after_decoded * S ((S (wip_index_extend_after)) * d) + (wip_mate_extend_after))) /\ ((exists wip_gap_extend_after_inverse_index_bound. wip_gap_extend_after_inverse_index_bound + S wip_index_extend_after = n) /\ ((exists wip_gap_extend_after_inverse_mate_bound. wip_gap_extend_after_inverse_mate_bound + S wip_mate_extend_after = n) /\ (exists wip_mod_left_extend_after_inverse_mod wip_mod_right_extend_after_inverse_mod. ((S wip_index_extend_after) * S wip_mate_extend_after) + p * wip_mod_left_extend_after_inverse_mod = 1 + p * wip_mod_right_extend_after_inverse_mod)))))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
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.
Named ingredients (3)
01Fix variables and assumptionsL1–9
02Establish hnewL10–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime inverse index exists.
- L10
have hnew : ∃ j. InverseIndex(p,n,l,j)Definitions: InverseIndex(p,n,l,j)Original native command in the exact edition - L11
specialize prime_inverse_index_exists p - L12
specialize prime_inverse_index_exists n - L13
specialize prime_inverse_index_exists l - L14
apply prime_inverse_index_exists - L15
exact hpn - L16
exact hp - L17
exact hln
03Separate the logical casesL18–18
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L18
cases hnew
04Use earlier factsL19–22
05Separate the logical casesL23–25
06Construct an explicit witnessL26–27
07Fix variables and assumptionsL28–29
08Establish hsplitL30–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
09Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
cases hsplit
10Construct an explicit witnessL36–36
Supply the displayed value, then prove that it has the required property.
- L36
exists x
11Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
split
12Calculate and transport equalitiesL38–39
13Establish hnew_entryL40–45
Establish this local claim before using it. It is not an additional assumption.
- L40
have hnew_entry : BetaAt(x1,x2,l,x)Definitions: BetaAt(x1,x2,l,x)Original native command in the exact edition - L41
exact beta_prefix_extend_witness_witness_left - L42
exact hnew_entry - L43
rewrite hsplit_left - L44
rewrite hsplit_left - L45
exact hnew_witness
14Establish holdL46–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprefix.
- L46
have hold : ∃ j. BetaAt(b,c,i,j) ∧ InverseIndex(p,n,i,j)Definitions: BetaAt(b,c,i,j)InverseIndex(p,n,i,j)Original native command in the exact edition - L47
specialize hprefix i - L48
apply hprefix - L49
exact hsplit_right
15Separate the logical casesL50–51
16Construct an explicit witnessL52–52
Supply the displayed value, then prove that it has the required property.
- L52
exists x3
17Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
split
18Use earlier factsL54–59
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 59 lines
- 0001
intro p - 0002
intro n - 0003
intro b - 0004
intro c - 0005
intro l - 0006
intro hpn - 0007
intro hp - 0008
intro hln - 0009
intro hprefix - 0010
have hnew : ∃ j. InverseIndex(p,n,l,j)Exact native replay line
have hnew : exists j. ((exists wip_gap_extend_new_inverse_index_bound. wip_gap_extend_new_inverse_index_bound + S l = n) /\ ((exists wip_gap_extend_new_inverse_mate_bound. wip_gap_extend_new_inverse_mate_bound + S j = n) /\ (exists wip_mod_left_extend_new_inverse_mod wip_mod_right_extend_new_inverse_mod. ((S l) * S j) + p * wip_mod_left_extend_new_inverse_mod = 1 + p * wip_mod_right_extend_new_inverse_mod))) - 0011
specialize prime_inverse_index_exists p - 0012
specialize prime_inverse_index_exists n - 0013
specialize prime_inverse_index_exists l - 0014
apply prime_inverse_index_exists - 0015
exact hpn - 0016
exact hp - 0017
exact hln - 0018
cases hnew - 0019
specialize beta_prefix_extend l - 0020
specialize beta_prefix_extend b - 0021
specialize beta_prefix_extend c - 0022
specialize beta_prefix_extend x - 0023
cases beta_prefix_extend - 0024
cases beta_prefix_extend_witness - 0025
cases beta_prefix_extend_witness_witness - 0026
exists x1 - 0027
exists x2 - 0028
intro i - 0029
intro hi - 0030
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists h. h + S i = l - 0031
specialize finite_lt_succ_eq_or_lt l - 0032
specialize finite_lt_succ_eq_or_lt i - 0033
apply finite_lt_succ_eq_or_lt - 0034
exact hi - 0035
cases hsplit - 0036
exists x - 0037
split - 0038
rewrite hsplit_left - 0039
rewrite hsplit_left - 0040
have hnew_entry : BetaAt(x1,x2,l,x)Exact native replay line
have hnew_entry : ((exists wip_beta_height_extend_new_entry. wip_beta_height_extend_new_entry + S (x) = S ((S (l)) * x2)) /\ exists wip_beta_quotient_extend_new_entry. x1 = wip_beta_quotient_extend_new_entry * S ((S (l)) * x2) + (x)) - 0041
exact beta_prefix_extend_witness_witness_left - 0042
exact hnew_entry - 0043
rewrite hsplit_left - 0044
rewrite hsplit_left - 0045
exact hnew_witness - 0046
have hold : ∃ j. BetaAt(b,c,i,j) ∧ InverseIndex(p,n,i,j)Exact native replay line
have hold : exists j. ((((exists wip_beta_height_extend_old_entry. wip_beta_height_extend_old_entry + S (j) = S ((S (i)) * c)) /\ exists wip_beta_quotient_extend_old_entry. b = wip_beta_quotient_extend_old_entry * S ((S (i)) * c) + (j))) /\ ((exists wip_gap_extend_old_inverse_index_bound. wip_gap_extend_old_inverse_index_bound + S i = n) /\ ((exists wip_gap_extend_old_inverse_mate_bound. wip_gap_extend_old_inverse_mate_bound + S j = n) /\ (exists wip_mod_left_extend_old_inverse_mod wip_mod_right_extend_old_inverse_mod. ((S i) * S j) + p * wip_mod_left_extend_old_inverse_mod = 1 + p * wip_mod_right_extend_old_inverse_mod)))) - 0047
specialize hprefix i - 0048
apply hprefix - 0049
exact hsplit_right - 0050
cases hold - 0051
cases hold_witness - 0052
exists x3 - 0053
split - 0054
specialize beta_prefix_extend_witness_witness_right i - 0055
specialize beta_prefix_extend_witness_witness_right x3 - 0056
apply beta_prefix_extend_witness_witness_right - 0057
exact hsplit_right - 0058
exact hold_witness_left - 0059
exact hold_witness_right