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 b c l y. ((exists fp_i_contains_l. ((exists fp_gap_contains_l_index. fp_gap_contains_l_index + S fp_i_contains_l = l) /\ (((exists ff_h_contains_l_entry. ff_h_contains_l_entry + S (y) = S ((S (fp_i_contains_l)) * c)) /\ exists ff_q_contains_l_entry. b = ff_q_contains_l_entry * S ((S (fp_i_contains_l)) * c) + (y))))) \/ ~(exists fp_i_contains_l. ((exists fp_gap_contains_l_index. fp_gap_contains_l_index + S fp_i_contains_l = l) /\ (((exists ff_h_contains_l_entry. ff_h_contains_l_entry + S (y) = S ((S (fp_i_contains_l)) * c)) /\ exists ff_q_contains_l_entry. b = ff_q_contains_l_entry * S ((S (fp_i_contains_l)) * c) + (y))))))Structural proof guide
Generated structural guide
Occurrence of a value in a nonempty decoded prefix is constructively decidable.
Use the direct prerequisites add_eq_zero_right, succ_ne_zero, finite_lt_succ_eq_or_lt, beta_at_exists, beta_at_unique, eq_decidable, le_refl, le_succ as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (11), intermediate claims (5), equality transport (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA003D finite_lt_succ_eq_or_lt PA0029 beta_at_exists PA002F beta_at_unique PA004G eq_decidable PA001A le_refl PA002O le_succDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Stable checked-use theorem is independently kernel-checked when replayed.
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 (8)
01Fix variables and assumptionsL1–2
02Induction on lL3–4
03Separate the logical casesL5–5
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L5
right
04Fix variables and assumptionsL6–6
Work with arbitrary variables or the premises of the current implication.
- L6
intro hcontains
05Separate the logical casesL7–9
06Establish hsiL10–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
07Establish hpresentL19–21
Establish this local claim before using it. It is not an additional assumption.
08Separate the logical casesL22–25
09Construct an explicit witnessL26–26
Supply the displayed value, then prove that it has the required property.
- L26
exists x
10Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
split
11Use earlier factsL28–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
12Separate the logical casesL36–36
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L36
cases beta_at_exists
13Use earlier factsL37–38
14Separate the logical casesL39–40
15Construct an explicit witnessL41–41
Supply the displayed value, then prove that it has the required property.
- L41
exists l
16Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
split
17Use earlier factsL43–44
18Calculate and transport equalitiesL45–46
19Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
exact beta_at_exists_witness
20Separate the logical casesL48–48
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L48
right
21Fix variables and assumptionsL49–49
Work with arbitrary variables or the premises of the current implication.
- L49
intro hfull
22Separate the logical casesL50–51
23Establish hindexL52–56
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
24Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
cases hindex
25Establish hentryL58–61
26Establish hxyL62–71
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
27Use earlier factsL72–73
28Construct an explicit witnessL74–74
Supply the displayed value, then prove that it has the required property.
- L74
exists x1
29Separate the logical casesL75–75
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L75
split
Original exact command ledger · 77 lines
- 0001
intro b - 0002
intro c - 0003
induction l - 0004
intro y - 0005
right - 0006
intro hcontains - 0007
cases hcontains - 0008
cases hcontains_witness - 0009
cases hcontains_witness_left - 0010
have hsi : S x = 0 - 0011
specialize add_eq_zero_right x1 - 0012
specialize add_eq_zero_right (S x) - 0013
apply add_eq_zero_right - 0014
exact hcontains_witness_left_witness - 0015
specialize succ_ne_zero x - 0016
apply succ_ne_zero - 0017
exact hsi - 0018
intro y - 0019
have hpresent : (exists i. ((exists h. h + S i = l) /\ ((exists h. h + S y = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + y))) \/ ~(exists i. ((exists h. h + S i = l) /\ ((exists h. h + S y = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + y))) - 0020
specialize IH y - 0021
exact IH - 0022
cases hpresent - 0023
left - 0024
cases hpresent_left - 0025
cases hpresent_left_witness - 0026
exists x - 0027
split - 0028
specialize le_succ (S x) - 0029
specialize le_succ l - 0030
apply le_succ - 0031
exact hpresent_left_witness_left - 0032
exact hpresent_left_witness_right - 0033
specialize beta_at_exists b - 0034
specialize beta_at_exists c - 0035
specialize beta_at_exists l - 0036
cases beta_at_exists - 0037
specialize eq_decidable x - 0038
specialize eq_decidable y - 0039
cases eq_decidable - 0040
left - 0041
exists l - 0042
split - 0043
specialize le_refl (S l) - 0044
exact le_refl - 0045
rewrite eq_decidable_left at beta_at_exists_witness - 0046
rewrite eq_decidable_left at beta_at_exists_witness - 0047
exact beta_at_exists_witness - 0048
right - 0049
intro hfull - 0050
cases hfull - 0051
cases hfull_witness - 0052
have hindex : x1 = l \/ exists h. h + S x1 = l - 0053
specialize finite_lt_succ_eq_or_lt l - 0054
specialize finite_lt_succ_eq_or_lt x1 - 0055
apply finite_lt_succ_eq_or_lt - 0056
exact hfull_witness_left - 0057
cases hindex - 0058
have hentry : ((exists h. h + S y = S ((S l) * c)) /\ exists q. b = q * S ((S l) * c) + y) - 0059
rewrite hindex_left at hfull_witness_right - 0060
rewrite hindex_left at hfull_witness_right - 0061
exact hfull_witness_right - 0062
have hxy : x = y - 0063
specialize beta_at_unique b - 0064
specialize beta_at_unique c - 0065
specialize beta_at_unique l - 0066
specialize beta_at_unique x - 0067
specialize beta_at_unique y - 0068
apply beta_at_unique - 0069
exact beta_at_exists_witness - 0070
exact hentry - 0071
apply eq_decidable_right - 0072
exact hxy - 0073
apply hpresent_right - 0074
exists x1 - 0075
split - 0076
exact hindex_right - 0077
exact hfull_witness_right