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
∀ b. ∀ c. ∀ l. ∀ n. ∀ r. n = S r → Lt(S S l,n) → ∃ x. Lt(x,n) ∧ (¬x = 0 ∧ ¬S x = n ∧ ¬ContainsPrefix(b,c,l,x))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
3 occurrences
In local proof propositions
11 occurrences
Exact expanded native-PA statement
forall b c l n r. n = S r -> (exists h. h + S (S (S l)) = n) -> (exists y. ((exists wpo_gap_choose_result_bound. wpo_gap_choose_result_bound + S (y) = n) /\ ((~(y = 0) /\ ~((S y) = n)) /\ (~(exists wpo_index_choose_result_omit_contains. ((exists wpo_gap_choose_result_omit_contains_bound. wpo_gap_choose_result_omit_contains_bound + S (wpo_index_choose_result_omit_contains) = l) /\ (((exists wpo_beta_height_choose_result_omit_contains_entry. wpo_beta_height_choose_result_omit_contains_entry + S (y) = S ((S (wpo_index_choose_result_omit_contains)) * c)) /\ exists wpo_beta_quotient_choose_result_omit_contains_entry. b = wpo_beta_quotient_choose_result_omit_contains_entry * S ((S (wpo_index_choose_result_omit_contains)) * c) + (y)))))))))Proof neighborhood
Direct theorem prerequisites
PA009K beta_prefix_append_two_exists PA0098 finite_short_prefix_omits PA001A le_refl PA002O le_succ PA003V succ_injectiveDirect 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–7
02Establish haugmentedL8–14
Establish this local claim before using it. It is not an additional assumption.
- L8
have haugmented : ∃ z. ∃ d. BetaAt(z,d,l,0) ∧ (BetaAt(z,d,S l,r) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(z,d,x,y)))Definitions: BetaAt(z,d,l,0)BetaAt(z,d,S l,r)Lt(x,l)BetaAt(b,c,x,y)BetaAt(z,d,x,y)Original native command in the exact edition - L9
specialize beta_prefix_append_two_exists b - L10
specialize beta_prefix_append_two_exists c - L11
specialize beta_prefix_append_two_exists l - L12
specialize beta_prefix_append_two_exists 0 - L13
specialize beta_prefix_append_two_exists r - L14
exact beta_prefix_append_two_exists
03Separate the logical casesL15–16
04Establish homittedL17–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite short prefix omits.
- L17
have homitted : ∃ wpo_value_choose_augmented_omit. Lt(wpo_value_choose_augmented_omit,n) ∧ ¬ContainsPrefix(x,x1,S S l,wpo_value_choose_augmented_omit)Definitions: Lt(wpo_value_choose_augmented_omit,n)ContainsPrefix(x,x1,S S l,wpo_value_choose_augmented_omit)Original native command in the exact edition - L18
specialize finite_short_prefix_omits x - L19
specialize finite_short_prefix_omits x1 - L20
specialize finite_short_prefix_omits (S (S l)) - L21
specialize finite_short_prefix_omits n - L22
apply finite_short_prefix_omits - L23
exact hshort
05Separate the logical casesL24–27
06Construct an explicit witnessL28–28
Supply the displayed value, then prove that it has the required property.
- L28
exists x2
07Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
split
08Use earlier factsL30–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L30
exact homitted_witness_left
09Separate the logical casesL31–32
10Fix variables and assumptionsL33–33
Work with arbitrary variables or the premises of the current implication.
- L33
intro hxzero
11Use earlier factsL34–34
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L34
apply homitted_witness_right
12Construct an explicit witnessL35–35
Supply the displayed value, then prove that it has the required property.
- L35
exists l
13Separate the logical casesL36–36
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L36
split
14Use earlier factsL37–41
15Calculate and transport equalitiesL42–43
16Use earlier factsL44–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L44
exact haugmented_witness_witness_left
17Fix variables and assumptionsL45–45
Work with arbitrary variables or the premises of the current implication.
- L45
intro hxlast
18Establish hxrL46–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ injective.
19Construct an explicit witnessL54–54
Supply the displayed value, then prove that it has the required property.
- L54
exists (S l)
20Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
split
21Use earlier factsL56–57
22Calculate and transport equalitiesL58–59
23Use earlier factsL60–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L60
exact haugmented_witness_witness_right_left
24Establish hold_omitL61–62
Establish this local claim before using it. It is not an additional assumption.
- L61
have hold_omit : ¬ContainsPrefix(b,c,l,x2)Definitions: ContainsPrefix(b,c,l,x2)Original native command in the exact edition - L62
intro hold_contains
25Separate the logical casesL63–64
26Establish hliftL65–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le succ.
27Establish hlift2L70–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le succ.
28Establish hnew_entryL75–81
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply haugmented witness witness right right.
- L75
have hnew_entry : BetaAt(x,x1,x3,x2)Definitions: BetaAt(x,x1,x3,x2)Original native command in the exact edition - L76
specialize haugmented_witness_witness_right_right x3 - L77
specialize haugmented_witness_witness_right_right x2 - L78
apply haugmented_witness_witness_right_right - L79
exact hold_contains_witness_left - L80
exact hold_contains_witness_right - L81
apply homitted_witness_right
29Construct an explicit witnessL82–82
Supply the displayed value, then prove that it has the required property.
- L82
exists x3
30Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
split
Original defined command ledger · 86 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro n - 0005
intro r - 0006
intro hnr - 0007
intro hshort - 0008
have haugmented : ∃ z. ∃ d. BetaAt(z,d,l,0) ∧ (BetaAt(z,d,S l,r) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(z,d,x,y)))Exact native replay line
have haugmented : exists z d. (((((exists wpo_beta_height_choose_augmented_trace_first. wpo_beta_height_choose_augmented_trace_first + S (0) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_choose_augmented_trace_first. z = wpo_beta_quotient_choose_augmented_trace_first * S ((S (l)) * d) + (0))) /\ ((((exists wpo_beta_height_choose_augmented_trace_second. wpo_beta_height_choose_augmented_trace_second + S (r) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_choose_augmented_trace_second. z = wpo_beta_quotient_choose_augmented_trace_second * S ((S (S (l))) * d) + (r))) /\ (forall wpo_old_index_choose_augmented_trace wpo_old_value_choose_augmented_trace. (exists wpo_gap_choose_augmented_trace_old_bound. wpo_gap_choose_augmented_trace_old_bound + S (wpo_old_index_choose_augmented_trace) = l) -> (((exists wpo_beta_height_choose_augmented_trace_old_entry. wpo_beta_height_choose_augmented_trace_old_entry + S (wpo_old_value_choose_augmented_trace) = S ((S (wpo_old_index_choose_augmented_trace)) * c)) /\ exists wpo_beta_quotient_choose_augmented_trace_old_entry. b = wpo_beta_quotient_choose_augmented_trace_old_entry * S ((S (wpo_old_index_choose_augmented_trace)) * c) + (wpo_old_value_choose_augmented_trace))) -> (((exists wpo_beta_height_choose_augmented_trace_new_entry. wpo_beta_height_choose_augmented_trace_new_entry + S (wpo_old_value_choose_augmented_trace) = S ((S (wpo_old_index_choose_augmented_trace)) * d)) /\ exists wpo_beta_quotient_choose_augmented_trace_new_entry. z = wpo_beta_quotient_choose_augmented_trace_new_entry * S ((S (wpo_old_index_choose_augmented_trace)) * d) + (wpo_old_value_choose_augmented_trace))))))) - 0009
specialize beta_prefix_append_two_exists b - 0010
specialize beta_prefix_append_two_exists c - 0011
specialize beta_prefix_append_two_exists l - 0012
specialize beta_prefix_append_two_exists 0 - 0013
specialize beta_prefix_append_two_exists r - 0014
exact beta_prefix_append_two_exists - 0015
cases haugmented - 0016
cases haugmented_witness - 0017
have homitted : ∃ wpo_value_choose_augmented_omit. Lt(wpo_value_choose_augmented_omit,n) ∧ ¬ContainsPrefix(x,x1,S S l,wpo_value_choose_augmented_omit)Exact native replay line
have homitted : exists wpo_value_choose_augmented_omit. ((exists wpo_gap_choose_augmented_omit_value_bound. wpo_gap_choose_augmented_omit_value_bound + S (wpo_value_choose_augmented_omit) = n) /\ (~(exists wpo_index_choose_augmented_omit_omitted_contains. ((exists wpo_gap_choose_augmented_omit_omitted_contains_bound. wpo_gap_choose_augmented_omit_omitted_contains_bound + S (wpo_index_choose_augmented_omit_omitted_contains) = S (S l)) /\ (((exists wpo_beta_height_choose_augmented_omit_omitted_contains_entry. wpo_beta_height_choose_augmented_omit_omitted_contains_entry + S (wpo_value_choose_augmented_omit) = S ((S (wpo_index_choose_augmented_omit_omitted_contains)) * x1)) /\ exists wpo_beta_quotient_choose_augmented_omit_omitted_contains_entry. x = wpo_beta_quotient_choose_augmented_omit_omitted_contains_entry * S ((S (wpo_index_choose_augmented_omit_omitted_contains)) * x1) + (wpo_value_choose_augmented_omit))))))) - 0018
specialize finite_short_prefix_omits x - 0019
specialize finite_short_prefix_omits x1 - 0020
specialize finite_short_prefix_omits (S (S l)) - 0021
specialize finite_short_prefix_omits n - 0022
apply finite_short_prefix_omits - 0023
exact hshort - 0024
cases homitted - 0025
cases homitted_witness - 0026
cases haugmented_witness_witness - 0027
cases haugmented_witness_witness_right - 0028
exists x2 - 0029
split - 0030
exact homitted_witness_left - 0031
split - 0032
split - 0033
intro hxzero - 0034
apply homitted_witness_right - 0035
exists l - 0036
split - 0037
specialize le_succ (S l) - 0038
specialize le_succ (S l) - 0039
apply le_succ - 0040
specialize le_refl (S l) - 0041
exact le_refl - 0042
rewrite hxzero - 0043
rewrite hxzero - 0044
exact haugmented_witness_witness_left - 0045
intro hxlast - 0046
have hxr : x2 = r - 0047
specialize succ_injective x2 - 0048
specialize succ_injective r - 0049
apply succ_injective - 0050
trans n - 0051
exact hxlast - 0052
exact hnr - 0053
apply homitted_witness_right - 0054
exists (S l) - 0055
split - 0056
specialize le_refl (S (S l)) - 0057
exact le_refl - 0058
rewrite hxr - 0059
rewrite hxr - 0060
exact haugmented_witness_witness_right_left - 0061
have hold_omit : ¬ContainsPrefix(b,c,l,x2)Exact native replay line
have hold_omit : ~(exists wpo_index_choose_old_omit_y_contains. ((exists wpo_gap_choose_old_omit_y_contains_bound. wpo_gap_choose_old_omit_y_contains_bound + S (wpo_index_choose_old_omit_y_contains) = l) /\ (((exists wpo_beta_height_choose_old_omit_y_contains_entry. wpo_beta_height_choose_old_omit_y_contains_entry + S (x2) = S ((S (wpo_index_choose_old_omit_y_contains)) * c)) /\ exists wpo_beta_quotient_choose_old_omit_y_contains_entry. b = wpo_beta_quotient_choose_old_omit_y_contains_entry * S ((S (wpo_index_choose_old_omit_y_contains)) * c) + (x2))))) - 0062
intro hold_contains - 0063
cases hold_contains - 0064
cases hold_contains_witness - 0065
have hlift : Lt(x3,S l)Exact native replay line
have hlift : exists h. h + S x3 = S l - 0066
specialize le_succ (S x3) - 0067
specialize le_succ l - 0068
apply le_succ - 0069
exact hold_contains_witness_left - 0070
have hlift2 : Lt(x3,S S l)Exact native replay line
have hlift2 : exists h. h + S x3 = S (S l) - 0071
specialize le_succ (S x3) - 0072
specialize le_succ (S l) - 0073
apply le_succ - 0074
exact hlift - 0075
have hnew_entry : BetaAt(x,x1,x3,x2)Exact native replay line
have hnew_entry : ((exists h. h + S x2 = S ((S x3) * x1)) /\ exists q. x = q * S ((S x3) * x1) + x2) - 0076
specialize haugmented_witness_witness_right_right x3 - 0077
specialize haugmented_witness_witness_right_right x2 - 0078
apply haugmented_witness_witness_right_right - 0079
exact hold_contains_witness_left - 0080
exact hold_contains_witness_right - 0081
apply homitted_witness_right - 0082
exists x3 - 0083
split - 0084
exact hlift2 - 0085
exact hnew_entry - 0086
exact hold_omit