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.
Exact expanded 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)))))Structural proof guide
Generated structural guide
Append one bounded zero-based inverse index to an inverse prefix.
Use the direct prerequisites prime_inverse_index_exists, beta_prefix_extend, finite_lt_succ_eq_or_lt as previously established PA formulas.
The proof proceeds by case analysis (7), intermediate claims (4), equality transport (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
Direct dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
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 : 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))) - 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 : ((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)) - 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
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 exact 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 : 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 \/ 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 : ((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 : 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