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. ∀ a. ∀ n. ∀ b. ∀ c. ∀ l. ∀ sl. p = S n → Prime(p) → ¬a = 0 → Lt(a,p) → Lt(l,n) → sl = S l → ScaledInversePrefix(p,a,n,b,c,l) → ∃ x. ∃ y. ScaledInversePrefix(p,a,n,x,y,sl)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
5 occurrences
In local proof propositions
5 occurrences
Exact expanded native-PA statement
forall p a n b c l sl. p = S n -> ((~(p = 1) /\ forall esi_prime_left_esip_extend_prime esi_prime_right_esip_extend_prime. p = esi_prime_left_esip_extend_prime * esi_prime_right_esip_extend_prime -> esi_prime_left_esip_extend_prime = 1 \/ esi_prime_right_esip_extend_prime = 1)) -> ~(a = 0) -> (exists esip_gap_extend_target_bound. esip_gap_extend_target_bound + S (a) = p) -> (exists esip_gap_extend_length_bound. esip_gap_extend_length_bound + S (l) = n) -> sl = S l -> (forall esip_index_extend_before. (exists esip_gap_extend_before_prefix_bound. esip_gap_extend_before_prefix_bound + S (esip_index_extend_before) = l) -> exists esip_mate_extend_before. ((((exists ff_h_esip_extend_before_entry. ff_h_esip_extend_before_entry + S (esip_mate_extend_before) = S ((S (esip_index_extend_before)) * c)) /\ exists ff_q_esip_extend_before_entry. b = ff_q_esip_extend_before_entry * S ((S (esip_index_extend_before)) * c) + (esip_mate_extend_before))) /\ ((exists esip_gap_extend_before_relation_index_bound. esip_gap_extend_before_relation_index_bound + S (esip_index_extend_before) = n) /\ ((((~((S esip_index_extend_before) = 0) /\ (exists esip_gap_extend_before_relation_scaled_left_bound. esip_gap_extend_before_relation_scaled_left_bound + S (S esip_index_extend_before) = p))) /\ (((~(esip_mate_extend_before = 0) /\ (exists esip_gap_extend_before_relation_scaled_right_bound. esip_gap_extend_before_relation_scaled_right_bound + S (esip_mate_extend_before) = p))) /\ (exists esi_mod_left_extend_before_relation_scaled_mod esi_mod_right_extend_before_relation_scaled_mod. ((S esip_index_extend_before) * esip_mate_extend_before) + p * esi_mod_left_extend_before_relation_scaled_mod = (a) + p * esi_mod_right_extend_before_relation_scaled_mod))))))) -> exists z d. (forall esip_index_extend_after. (exists esip_gap_extend_after_prefix_bound. esip_gap_extend_after_prefix_bound + S (esip_index_extend_after) = sl) -> exists esip_mate_extend_after. ((((exists ff_h_esip_extend_after_entry. ff_h_esip_extend_after_entry + S (esip_mate_extend_after) = S ((S (esip_index_extend_after)) * d)) /\ exists ff_q_esip_extend_after_entry. z = ff_q_esip_extend_after_entry * S ((S (esip_index_extend_after)) * d) + (esip_mate_extend_after))) /\ ((exists esip_gap_extend_after_relation_index_bound. esip_gap_extend_after_relation_index_bound + S (esip_index_extend_after) = n) /\ ((((~((S esip_index_extend_after) = 0) /\ (exists esip_gap_extend_after_relation_scaled_left_bound. esip_gap_extend_after_relation_scaled_left_bound + S (S esip_index_extend_after) = p))) /\ (((~(esip_mate_extend_after = 0) /\ (exists esip_gap_extend_after_relation_scaled_right_bound. esip_gap_extend_after_relation_scaled_right_bound + S (esip_mate_extend_after) = p))) /\ (exists esi_mod_left_extend_after_relation_scaled_mod esi_mod_right_extend_after_relation_scaled_mod. ((S esip_index_extend_after) * esip_mate_extend_after) + p * esi_mod_left_extend_after_relation_scaled_mod = (a) + p * esi_mod_right_extend_after_relation_scaled_mod)))))))Proof neighborhood
Direct theorem prerequisites
PA0005 succ_ne_zero PA002K succ_le_succ PA008Q prime_scaled_inverse_exists PA002X beta_prefix_extend PA003D finite_lt_succ_eq_or_ltDirect 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 (5)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hsource_boundL15–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ le succ.
04Establish hnewL21–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime scaled inverse exists.
- L21
have hnew : ∃ j. ScaledInverse(p,a,S l,j)Definitions: ScaledInverse(p,a,S l,j)Original native command in the exact edition - L22
specialize prime_scaled_inverse_exists p - L23
specialize prime_scaled_inverse_exists a - L24
specialize prime_scaled_inverse_exists (S l) - L25
apply prime_scaled_inverse_exists - L26
exact hp - L27
exact ha0 - L28
exact hap - L29
specialize succ_ne_zero l - L30
exact succ_ne_zero
05Use earlier factsL31–31
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L31
exact hsource_bound
06Separate the logical casesL32–32
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L32
cases hnew
07Use earlier factsL33–36
08Separate the logical casesL37–39
09Construct an explicit witnessL40–41
10Fix variables and assumptionsL42–43
11Calculate and transport equalitiesL44–44
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L44
rewrite hsl at hi
12Establish hsplitL45–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
13Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
cases hsplit
14Construct an explicit witnessL51–51
Supply the displayed value, then prove that it has the required property.
- L51
exists x
15Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
split
16Calculate and transport equalitiesL53–54
17Use earlier factsL55–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
exact beta_prefix_extend_witness_witness_left
18Separate the logical casesL56–56
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L56
split
19Calculate and transport equalitiesL57–57
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L57
rewrite hsplit_left
20Use earlier factsL58–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
exact hln
21Calculate and transport equalitiesL59–61
22Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact hnew_witness
23Establish holdL63–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprefix.
- L63
have hold : ∃ j. BetaAt(b,c,i,j) ∧ ScaledInverseIndex(p,a,n,i,j)Definitions: BetaAt(b,c,i,j)ScaledInverseIndex(p,a,n,i,j)Original native command in the exact edition - L64
specialize hprefix i - L65
apply hprefix - L66
exact hsplit_right
24Separate the logical casesL67–68
25Construct an explicit witnessL69–69
Supply the displayed value, then prove that it has the required property.
- L69
exists x3
26Separate the logical casesL70–70
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L70
split
27Use earlier factsL71–76
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 76 lines
- 0001
intro p - 0002
intro a - 0003
intro n - 0004
intro b - 0005
intro c - 0006
intro l - 0007
intro sl - 0008
intro hpn - 0009
intro hp - 0010
intro ha0 - 0011
intro hap - 0012
intro hln - 0013
intro hsl - 0014
intro hprefix - 0015
have hsource_bound : Lt(S l,p)Exact native replay line
have hsource_bound : exists esip_gap_extend_source_bound. esip_gap_extend_source_bound + S (S l) = p - 0016
rewrite hpn - 0017
specialize succ_le_succ (S l) - 0018
specialize succ_le_succ n - 0019
apply succ_le_succ - 0020
exact hln - 0021
have hnew : ∃ j. ScaledInverse(p,a,S l,j)Exact native replay line
have hnew : exists j. ((((~((S l) = 0) /\ (exists esip_gap_extend_new_scaled_left_bound. esip_gap_extend_new_scaled_left_bound + S (S l) = p))) /\ (((~(j = 0) /\ (exists esip_gap_extend_new_scaled_right_bound. esip_gap_extend_new_scaled_right_bound + S (j) = p))) /\ (exists esi_mod_left_extend_new_scaled_mod esi_mod_right_extend_new_scaled_mod. ((S l) * j) + p * esi_mod_left_extend_new_scaled_mod = (a) + p * esi_mod_right_extend_new_scaled_mod)))) - 0022
specialize prime_scaled_inverse_exists p - 0023
specialize prime_scaled_inverse_exists a - 0024
specialize prime_scaled_inverse_exists (S l) - 0025
apply prime_scaled_inverse_exists - 0026
exact hp - 0027
exact ha0 - 0028
exact hap - 0029
specialize succ_ne_zero l - 0030
exact succ_ne_zero - 0031
exact hsource_bound - 0032
cases hnew - 0033
specialize beta_prefix_extend l - 0034
specialize beta_prefix_extend b - 0035
specialize beta_prefix_extend c - 0036
specialize beta_prefix_extend x - 0037
cases beta_prefix_extend - 0038
cases beta_prefix_extend_witness - 0039
cases beta_prefix_extend_witness_witness - 0040
exists x1 - 0041
exists x2 - 0042
intro i - 0043
intro hi - 0044
rewrite hsl at hi - 0045
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists h. h + S i = l - 0046
specialize finite_lt_succ_eq_or_lt l - 0047
specialize finite_lt_succ_eq_or_lt i - 0048
apply finite_lt_succ_eq_or_lt - 0049
exact hi - 0050
cases hsplit - 0051
exists x - 0052
split - 0053
rewrite hsplit_left - 0054
rewrite hsplit_left - 0055
exact beta_prefix_extend_witness_witness_left - 0056
split - 0057
rewrite hsplit_left - 0058
exact hln - 0059
rewrite hsplit_left - 0060
rewrite hsplit_left - 0061
rewrite hsplit_left - 0062
exact hnew_witness - 0063
have hold : ∃ j. BetaAt(b,c,i,j) ∧ ScaledInverseIndex(p,a,n,i,j)Exact native replay line
have hold : exists j. ((((exists ff_h_esip_extend_old_entry. ff_h_esip_extend_old_entry + S (j) = S ((S (i)) * c)) /\ exists ff_q_esip_extend_old_entry. b = ff_q_esip_extend_old_entry * S ((S (i)) * c) + (j))) /\ ((exists esip_gap_extend_old_relation_index_bound. esip_gap_extend_old_relation_index_bound + S (i) = n) /\ ((((~((S i) = 0) /\ (exists esip_gap_extend_old_relation_scaled_left_bound. esip_gap_extend_old_relation_scaled_left_bound + S (S i) = p))) /\ (((~(j = 0) /\ (exists esip_gap_extend_old_relation_scaled_right_bound. esip_gap_extend_old_relation_scaled_right_bound + S (j) = p))) /\ (exists esi_mod_left_extend_old_relation_scaled_mod esi_mod_right_extend_old_relation_scaled_mod. ((S i) * j) + p * esi_mod_left_extend_old_relation_scaled_mod = (a) + p * esi_mod_right_extend_old_relation_scaled_mod)))))) - 0064
specialize hprefix i - 0065
apply hprefix - 0066
exact hsplit_right - 0067
cases hold - 0068
cases hold_witness - 0069
exists x3 - 0070
split - 0071
specialize beta_prefix_extend_witness_witness_right i - 0072
specialize beta_prefix_extend_witness_witness_right x3 - 0073
apply beta_prefix_extend_witness_witness_right - 0074
exact hsplit_right - 0075
exact hold_witness_left - 0076
exact hold_witness_right