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
∀ u. ∀ v. ∀ b. ∀ c. ∀ z. ∀ d. ∀ l. ∀ i. ∀ j. BetaAt(z,d,l,i) ∧ (BetaAt(z,d,S l,j) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(z,d,x,y))) → (∀ x. ∀ y. ∀ n. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(u,v,y,S n) → ContainsPrefix(b,c,l,n)) → BetaAt(u,v,i,S j) → BetaAt(u,v,j,S i) → ∀ x. ∀ y. ∀ n. Lt(x,S S l) → BetaAt(z,d,x,y) → BetaAt(u,v,y,S n) → ContainsPrefix(z,d,S S l,n)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
15 occurrences
In local proof propositions
13 occurrences
Exact expanded native-PA statement
forall u v b c z d l i j. (((((exists wpo_beta_height_closure_trace_first. wpo_beta_height_closure_trace_first + S (i) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_closure_trace_first. z = wpo_beta_quotient_closure_trace_first * S ((S (l)) * d) + (i))) /\ ((((exists wpo_beta_height_closure_trace_second. wpo_beta_height_closure_trace_second + S (j) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_closure_trace_second. z = wpo_beta_quotient_closure_trace_second * S ((S (S (l))) * d) + (j))) /\ (forall wpo_old_index_closure_trace wpo_old_value_closure_trace. (exists wpo_gap_closure_trace_old_bound. wpo_gap_closure_trace_old_bound + S (wpo_old_index_closure_trace) = l) -> (((exists wpo_beta_height_closure_trace_old_entry. wpo_beta_height_closure_trace_old_entry + S (wpo_old_value_closure_trace) = S ((S (wpo_old_index_closure_trace)) * c)) /\ exists wpo_beta_quotient_closure_trace_old_entry. b = wpo_beta_quotient_closure_trace_old_entry * S ((S (wpo_old_index_closure_trace)) * c) + (wpo_old_value_closure_trace))) -> (((exists wpo_beta_height_closure_trace_new_entry. wpo_beta_height_closure_trace_new_entry + S (wpo_old_value_closure_trace) = S ((S (wpo_old_index_closure_trace)) * d)) /\ exists wpo_beta_quotient_closure_trace_new_entry. z = wpo_beta_quotient_closure_trace_new_entry * S ((S (wpo_old_index_closure_trace)) * d) + (wpo_old_value_closure_trace))))))) -> (forall espo_position_closure_before espo_source_closure_before espo_mate_closure_before. (exists wpo_gap_closure_before_position_bound. wpo_gap_closure_before_position_bound + S (espo_position_closure_before) = l) -> (((exists wpo_beta_height_closure_before_source_entry. wpo_beta_height_closure_before_source_entry + S (espo_source_closure_before) = S ((S (espo_position_closure_before)) * c)) /\ exists wpo_beta_quotient_closure_before_source_entry. b = wpo_beta_quotient_closure_before_source_entry * S ((S (espo_position_closure_before)) * c) + (espo_source_closure_before))) -> (((exists wpo_beta_height_closure_before_scaled_entry. wpo_beta_height_closure_before_scaled_entry + S (S espo_mate_closure_before) = S ((S (espo_source_closure_before)) * v)) /\ exists wpo_beta_quotient_closure_before_scaled_entry. u = wpo_beta_quotient_closure_before_scaled_entry * S ((S (espo_source_closure_before)) * v) + (S espo_mate_closure_before))) -> exists espo_mate_position_closure_before. ((exists wpo_gap_closure_before_mate_bound. wpo_gap_closure_before_mate_bound + S (espo_mate_position_closure_before) = l) /\ (((exists wpo_beta_height_closure_before_mate_entry. wpo_beta_height_closure_before_mate_entry + S (espo_mate_closure_before) = S ((S (espo_mate_position_closure_before)) * c)) /\ exists wpo_beta_quotient_closure_before_mate_entry. b = wpo_beta_quotient_closure_before_mate_entry * S ((S (espo_mate_position_closure_before)) * c) + (espo_mate_closure_before))))) -> (((exists wpo_beta_height_closure_forward. wpo_beta_height_closure_forward + S (S j) = S ((S (i)) * v)) /\ exists wpo_beta_quotient_closure_forward. u = wpo_beta_quotient_closure_forward * S ((S (i)) * v) + (S j))) -> (((exists wpo_beta_height_closure_back. wpo_beta_height_closure_back + S (S i) = S ((S (j)) * v)) /\ exists wpo_beta_quotient_closure_back. u = wpo_beta_quotient_closure_back * S ((S (j)) * v) + (S i))) -> (forall espo_position_closure_after espo_source_closure_after espo_mate_closure_after. (exists wpo_gap_closure_after_position_bound. wpo_gap_closure_after_position_bound + S (espo_position_closure_after) = S (S l)) -> (((exists wpo_beta_height_closure_after_source_entry. wpo_beta_height_closure_after_source_entry + S (espo_source_closure_after) = S ((S (espo_position_closure_after)) * d)) /\ exists wpo_beta_quotient_closure_after_source_entry. z = wpo_beta_quotient_closure_after_source_entry * S ((S (espo_position_closure_after)) * d) + (espo_source_closure_after))) -> (((exists wpo_beta_height_closure_after_scaled_entry. wpo_beta_height_closure_after_scaled_entry + S (S espo_mate_closure_after) = S ((S (espo_source_closure_after)) * v)) /\ exists wpo_beta_quotient_closure_after_scaled_entry. u = wpo_beta_quotient_closure_after_scaled_entry * S ((S (espo_source_closure_after)) * v) + (S espo_mate_closure_after))) -> exists espo_mate_position_closure_after. ((exists wpo_gap_closure_after_mate_bound. wpo_gap_closure_after_mate_bound + S (espo_mate_position_closure_after) = S (S l)) /\ (((exists wpo_beta_height_closure_after_mate_entry. wpo_beta_height_closure_after_mate_entry + S (espo_mate_closure_after) = S ((S (espo_mate_position_closure_after)) * d)) /\ exists wpo_beta_quotient_closure_after_mate_entry. z = wpo_beta_quotient_closure_after_mate_entry * S ((S (espo_mate_position_closure_after)) * d) + (espo_mate_closure_after)))))Proof neighborhood
Direct theorem prerequisites
PA009L beta_prefix_append_two_reflect PA002F beta_at_unique PA003V succ_injective PA001A le_refl PA002O le_succDirect 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–13
03Establish htrace_partsL14–15
Establish this local claim before using it. It is not an additional assumption.
- L14
have htrace_parts : BetaAt(z,d,l,i) ∧ (BetaAt(z,d,S l,j) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(z,d,x,y)))Definitions: BetaAt(z,d,l,i)BetaAt(z,d,S l,j)Lt(x,l)BetaAt(b,c,x,y)BetaAt(z,d,x,y)Original native command in the exact edition - L15
exact htrace
04Separate the logical casesL16–17
05Fix variables and assumptionsL18–23
06Establish hreflect_allL24–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix append two reflect.
- L24
have hreflect_all : ∀ q. ∀ s. Lt(q,S S l) → BetaAt(z,d,q,s) → q = S l ∧ s = j ∨ (q = l ∧ s = i ∨ Lt(q,l) ∧ BetaAt(b,c,q,s))Definitions: Lt(q,S S l)BetaAt(z,d,q,s)Lt(q,l)BetaAt(b,c,q,s)Original native command in the exact edition - L25
specialize beta_prefix_append_two_reflect b - L26
specialize beta_prefix_append_two_reflect c - L27
specialize beta_prefix_append_two_reflect z - L28
specialize beta_prefix_append_two_reflect d - L29
specialize beta_prefix_append_two_reflect l - L30
specialize beta_prefix_append_two_reflect i - L31
specialize beta_prefix_append_two_reflect j - L32
apply beta_prefix_append_two_reflect - L33
exact htrace
07Establish hreflectL34–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hreflect all.
- L34
have hreflect : q = S l ∧ s = j ∨ (q = l ∧ s = i ∨ Lt(q,l) ∧ BetaAt(b,c,q,s))Definitions: Lt(q,l)BetaAt(b,c,q,s)Original native command in the exact edition - L35
specialize hreflect_all q - L36
specialize hreflect_all s - L37
apply hreflect_all - L38
exact hq - L39
exact hsource
08Separate the logical casesL40–41
09Establish hmate_succL42–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L42
have hmate_succ : S m = S i - L43
specialize beta_at_unique u - L44
specialize beta_at_unique v - L45
specialize beta_at_unique j - L46
specialize beta_at_unique (S m) - L47
specialize beta_at_unique (S i) - L48
apply beta_at_unique - L49
rewrite hreflect_left_right at hscaled - L50
rewrite hreflect_left_right at hscaled - L51
exact hscaled
10Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hback
11Establish hmateL53–57
12Construct an explicit witnessL58–58
Supply the displayed value, then prove that it has the required property.
- L58
exists l
13Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
split
14Use earlier factsL60–64
15Calculate and transport equalitiesL65–66
16Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
exact htrace_parts_left
17Separate the logical casesL68–69
18Establish hmate_succ_secondL70–79
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L70
have hmate_succ_second : S m = S j - L71
specialize beta_at_unique u - L72
specialize beta_at_unique v - L73
specialize beta_at_unique i - L74
specialize beta_at_unique (S m) - L75
specialize beta_at_unique (S j) - L76
apply beta_at_unique - L77
rewrite hreflect_right_left_right at hscaled - L78
rewrite hreflect_right_left_right at hscaled - L79
exact hscaled
19Use earlier factsL80–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact hforward
20Establish hmate_secondL81–85
21Construct an explicit witnessL86–86
Supply the displayed value, then prove that it has the required property.
- L86
exists (S l)
22Separate the logical casesL87–87
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L87
split
23Use earlier factsL88–89
24Calculate and transport equalitiesL90–91
25Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact htrace_parts_right_left
26Separate the logical casesL93–93
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L93
cases hreflect_right_right
27Establish hold_occurrenceL94–101
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hclosed.
- L94
have hold_occurrence : ContainsPrefix(b,c,l,m)Definitions: ContainsPrefix(b,c,l,m)Original native command in the exact edition - L95
specialize hclosed q - L96
specialize hclosed s - L97
specialize hclosed m - L98
apply hclosed - L99
exact hreflect_right_right_left - L100
exact hreflect_right_right_right - L101
exact hscaled
28Separate the logical casesL102–103
29Construct an explicit witnessL104–104
Supply the displayed value, then prove that it has the required property.
- L104
exists x
30Separate the logical casesL105–105
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L105
split
31Establish hliftL106–115
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le succ.
Original defined command ledger · 119 lines
- 0001
intro u - 0002
intro v - 0003
intro b - 0004
intro c - 0005
intro z - 0006
intro d - 0007
intro l - 0008
intro i - 0009
intro j - 0010
intro htrace - 0011
intro hclosed - 0012
intro hforward - 0013
intro hback - 0014
have htrace_parts : BetaAt(z,d,l,i) ∧ (BetaAt(z,d,S l,j) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(z,d,x,y)))Exact native replay line
have htrace_parts : ((((exists wpo_beta_height_closure_trace_first. wpo_beta_height_closure_trace_first + S (i) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_closure_trace_first. z = wpo_beta_quotient_closure_trace_first * S ((S (l)) * d) + (i))) /\ ((((exists wpo_beta_height_closure_trace_second. wpo_beta_height_closure_trace_second + S (j) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_closure_trace_second. z = wpo_beta_quotient_closure_trace_second * S ((S (S (l))) * d) + (j))) /\ (forall wpo_old_index_closure_trace wpo_old_value_closure_trace. (exists wpo_gap_closure_trace_old_bound. wpo_gap_closure_trace_old_bound + S (wpo_old_index_closure_trace) = l) -> (((exists wpo_beta_height_closure_trace_old_entry. wpo_beta_height_closure_trace_old_entry + S (wpo_old_value_closure_trace) = S ((S (wpo_old_index_closure_trace)) * c)) /\ exists wpo_beta_quotient_closure_trace_old_entry. b = wpo_beta_quotient_closure_trace_old_entry * S ((S (wpo_old_index_closure_trace)) * c) + (wpo_old_value_closure_trace))) -> (((exists wpo_beta_height_closure_trace_new_entry. wpo_beta_height_closure_trace_new_entry + S (wpo_old_value_closure_trace) = S ((S (wpo_old_index_closure_trace)) * d)) /\ exists wpo_beta_quotient_closure_trace_new_entry. z = wpo_beta_quotient_closure_trace_new_entry * S ((S (wpo_old_index_closure_trace)) * d) + (wpo_old_value_closure_trace)))))) - 0015
exact htrace - 0016
cases htrace_parts - 0017
cases htrace_parts_right - 0018
intro q - 0019
intro s - 0020
intro m - 0021
intro hq - 0022
intro hsource - 0023
intro hscaled - 0024
have hreflect_all : ∀ q. ∀ s. Lt(q,S S l) → BetaAt(z,d,q,s) → q = S l ∧ s = j ∨ (q = l ∧ s = i ∨ Lt(q,l) ∧ BetaAt(b,c,q,s))Exact native replay line
have hreflect_all : forall q s. (exists wpo_gap_closure_reflection_bound. wpo_gap_closure_reflection_bound + S (q) = S (S l)) -> (((exists wpo_beta_height_closure_reflection_entry. wpo_beta_height_closure_reflection_entry + S (s) = S ((S (q)) * d)) /\ exists wpo_beta_quotient_closure_reflection_entry. z = wpo_beta_quotient_closure_reflection_entry * S ((S (q)) * d) + (s))) -> (((q = S (l) /\ s = j) \/ ((q = l /\ s = i) \/ ((exists wpo_gap_closure_reflection_old_bound. wpo_gap_closure_reflection_old_bound + S (q) = l) /\ (((exists wpo_beta_height_closure_reflection_old_entry. wpo_beta_height_closure_reflection_old_entry + S (s) = S ((S (q)) * c)) /\ exists wpo_beta_quotient_closure_reflection_old_entry. b = wpo_beta_quotient_closure_reflection_old_entry * S ((S (q)) * c) + (s))))))) - 0025
specialize beta_prefix_append_two_reflect b - 0026
specialize beta_prefix_append_two_reflect c - 0027
specialize beta_prefix_append_two_reflect z - 0028
specialize beta_prefix_append_two_reflect d - 0029
specialize beta_prefix_append_two_reflect l - 0030
specialize beta_prefix_append_two_reflect i - 0031
specialize beta_prefix_append_two_reflect j - 0032
apply beta_prefix_append_two_reflect - 0033
exact htrace - 0034
have hreflect : q = S l ∧ s = j ∨ (q = l ∧ s = i ∨ Lt(q,l) ∧ BetaAt(b,c,q,s))Exact native replay line
have hreflect : ((q = S (l) /\ s = j) \/ ((q = l /\ s = i) \/ ((exists wpo_gap_closure_reflection_old_bound. wpo_gap_closure_reflection_old_bound + S (q) = l) /\ (((exists wpo_beta_height_closure_reflection_old_entry. wpo_beta_height_closure_reflection_old_entry + S (s) = S ((S (q)) * c)) /\ exists wpo_beta_quotient_closure_reflection_old_entry. b = wpo_beta_quotient_closure_reflection_old_entry * S ((S (q)) * c) + (s)))))) - 0035
specialize hreflect_all q - 0036
specialize hreflect_all s - 0037
apply hreflect_all - 0038
exact hq - 0039
exact hsource - 0040
cases hreflect - 0041
cases hreflect_left - 0042
have hmate_succ : S m = S i - 0043
specialize beta_at_unique u - 0044
specialize beta_at_unique v - 0045
specialize beta_at_unique j - 0046
specialize beta_at_unique (S m) - 0047
specialize beta_at_unique (S i) - 0048
apply beta_at_unique - 0049
rewrite hreflect_left_right at hscaled - 0050
rewrite hreflect_left_right at hscaled - 0051
exact hscaled - 0052
exact hback - 0053
have hmate : m = i - 0054
specialize succ_injective m - 0055
specialize succ_injective i - 0056
apply succ_injective - 0057
exact hmate_succ - 0058
exists l - 0059
split - 0060
specialize le_succ (S l) - 0061
specialize le_succ (S l) - 0062
apply le_succ - 0063
specialize le_refl (S l) - 0064
exact le_refl - 0065
rewrite hmate - 0066
rewrite hmate - 0067
exact htrace_parts_left - 0068
cases hreflect_right - 0069
cases hreflect_right_left - 0070
have hmate_succ_second : S m = S j - 0071
specialize beta_at_unique u - 0072
specialize beta_at_unique v - 0073
specialize beta_at_unique i - 0074
specialize beta_at_unique (S m) - 0075
specialize beta_at_unique (S j) - 0076
apply beta_at_unique - 0077
rewrite hreflect_right_left_right at hscaled - 0078
rewrite hreflect_right_left_right at hscaled - 0079
exact hscaled - 0080
exact hforward - 0081
have hmate_second : m = j - 0082
specialize succ_injective m - 0083
specialize succ_injective j - 0084
apply succ_injective - 0085
exact hmate_succ_second - 0086
exists (S l) - 0087
split - 0088
specialize le_refl (S (S l)) - 0089
exact le_refl - 0090
rewrite hmate_second - 0091
rewrite hmate_second - 0092
exact htrace_parts_right_left - 0093
cases hreflect_right_right - 0094
have hold_occurrence : ContainsPrefix(b,c,l,m)Exact native replay line
have hold_occurrence : exists wpo_index_closure_old_occurrence. ((exists wpo_gap_closure_old_occurrence_bound. wpo_gap_closure_old_occurrence_bound + S (wpo_index_closure_old_occurrence) = l) /\ (((exists wpo_beta_height_closure_old_occurrence_entry. wpo_beta_height_closure_old_occurrence_entry + S (m) = S ((S (wpo_index_closure_old_occurrence)) * c)) /\ exists wpo_beta_quotient_closure_old_occurrence_entry. b = wpo_beta_quotient_closure_old_occurrence_entry * S ((S (wpo_index_closure_old_occurrence)) * c) + (m)))) - 0095
specialize hclosed q - 0096
specialize hclosed s - 0097
specialize hclosed m - 0098
apply hclosed - 0099
exact hreflect_right_right_left - 0100
exact hreflect_right_right_right - 0101
exact hscaled - 0102
cases hold_occurrence - 0103
cases hold_occurrence_witness - 0104
exists x - 0105
split - 0106
have hlift : Lt(x,S l)Exact native replay line
have hlift : exists h. h + S x = S l - 0107
specialize le_succ (S x) - 0108
specialize le_succ l - 0109
apply le_succ - 0110
exact hold_occurrence_witness_left - 0111
specialize le_succ (S x) - 0112
specialize le_succ (S l) - 0113
apply le_succ - 0114
exact hlift - 0115
specialize htrace_parts_right_right x - 0116
specialize htrace_parts_right_right m - 0117
apply htrace_parts_right_right - 0118
exact hold_occurrence_witness_left - 0119
exact hold_occurrence_witness_right