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. ∀ a. ∀ e. BetaAt(z,d,l,a) ∧ (BetaAt(z,d,S l,e) ∧ (∀ 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,n) → ContainsPrefix(b,c,l,n)) → BetaAt(u,v,a,e) → BetaAt(u,v,e,a) → ∀ x. ∀ y. ∀ n. Lt(x,S S l) → BetaAt(z,d,x,y) → BetaAt(u,v,y,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 a e. (((((exists wpo_beta_height_closure_trace_first. wpo_beta_height_closure_trace_first + S (a) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_closure_trace_first. z = wpo_beta_quotient_closure_trace_first * S ((S (l)) * d) + (a))) /\ ((((exists wpo_beta_height_closure_trace_second. wpo_beta_height_closure_trace_second + S (e) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_closure_trace_second. z = wpo_beta_quotient_closure_trace_second * S ((S (S (l))) * d) + (e))) /\ (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 wpo_position_closure_before wpo_source_closure_before wpo_mate_closure_before. (exists wpo_gap_closure_before_position_bound. wpo_gap_closure_before_position_bound + S (wpo_position_closure_before) = l) -> (((exists wpo_beta_height_closure_before_source_entry. wpo_beta_height_closure_before_source_entry + S (wpo_source_closure_before) = S ((S (wpo_position_closure_before)) * c)) /\ exists wpo_beta_quotient_closure_before_source_entry. b = wpo_beta_quotient_closure_before_source_entry * S ((S (wpo_position_closure_before)) * c) + (wpo_source_closure_before))) -> (((exists wpo_beta_height_closure_before_inverse_entry. wpo_beta_height_closure_before_inverse_entry + S (wpo_mate_closure_before) = S ((S (wpo_source_closure_before)) * v)) /\ exists wpo_beta_quotient_closure_before_inverse_entry. u = wpo_beta_quotient_closure_before_inverse_entry * S ((S (wpo_source_closure_before)) * v) + (wpo_mate_closure_before))) -> exists wpo_mate_position_closure_before. ((exists wpo_gap_closure_before_mate_bound. wpo_gap_closure_before_mate_bound + S (wpo_mate_position_closure_before) = l) /\ (((exists wpo_beta_height_closure_before_mate_entry. wpo_beta_height_closure_before_mate_entry + S (wpo_mate_closure_before) = S ((S (wpo_mate_position_closure_before)) * c)) /\ exists wpo_beta_quotient_closure_before_mate_entry. b = wpo_beta_quotient_closure_before_mate_entry * S ((S (wpo_mate_position_closure_before)) * c) + (wpo_mate_closure_before))))) -> (((exists wpo_beta_height_closure_forward. wpo_beta_height_closure_forward + S (e) = S ((S (a)) * v)) /\ exists wpo_beta_quotient_closure_forward. u = wpo_beta_quotient_closure_forward * S ((S (a)) * v) + (e))) -> (((exists wpo_beta_height_closure_back. wpo_beta_height_closure_back + S (a) = S ((S (e)) * v)) /\ exists wpo_beta_quotient_closure_back. u = wpo_beta_quotient_closure_back * S ((S (e)) * v) + (a))) -> (forall wpo_position_closure_after wpo_source_closure_after wpo_mate_closure_after. (exists wpo_gap_closure_after_position_bound. wpo_gap_closure_after_position_bound + S (wpo_position_closure_after) = S (S l)) -> (((exists wpo_beta_height_closure_after_source_entry. wpo_beta_height_closure_after_source_entry + S (wpo_source_closure_after) = S ((S (wpo_position_closure_after)) * d)) /\ exists wpo_beta_quotient_closure_after_source_entry. z = wpo_beta_quotient_closure_after_source_entry * S ((S (wpo_position_closure_after)) * d) + (wpo_source_closure_after))) -> (((exists wpo_beta_height_closure_after_inverse_entry. wpo_beta_height_closure_after_inverse_entry + S (wpo_mate_closure_after) = S ((S (wpo_source_closure_after)) * v)) /\ exists wpo_beta_quotient_closure_after_inverse_entry. u = wpo_beta_quotient_closure_after_inverse_entry * S ((S (wpo_source_closure_after)) * v) + (wpo_mate_closure_after))) -> exists wpo_mate_position_closure_after. ((exists wpo_gap_closure_after_mate_bound. wpo_gap_closure_after_mate_bound + S (wpo_mate_position_closure_after) = S (S l)) /\ (((exists wpo_beta_height_closure_after_mate_entry. wpo_beta_height_closure_after_mate_entry + S (wpo_mate_closure_after) = S ((S (wpo_mate_position_closure_after)) * d)) /\ exists wpo_beta_quotient_closure_after_mate_entry. z = wpo_beta_quotient_closure_after_mate_entry * S ((S (wpo_mate_position_closure_after)) * d) + (wpo_mate_closure_after)))))Proof neighborhood
Direct theorem prerequisites
Direct 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 (4)
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,a) ∧ (BetaAt(z,d,S l,e) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(z,d,x,y)))Definitions: BetaAt(z,d,l,a)BetaAt(z,d,S l,e)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 = e ∨ (q = l ∧ s = a ∨ 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 a - L31
specialize beta_prefix_append_two_reflect e - 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 = e ∨ (q = l ∧ s = a ∨ 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_firstL42–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_first : m = a - L43
specialize beta_at_unique u - L44
specialize beta_at_unique v - L45
specialize beta_at_unique e - L46
specialize beta_at_unique m - L47
specialize beta_at_unique a - L48
apply beta_at_unique - L49
rewrite hreflect_left_right at hinverse - L50
rewrite hreflect_left_right at hinverse - L51
exact hinverse
10Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hback
11Construct an explicit witnessL53–53
Supply the displayed value, then prove that it has the required property.
- L53
exists l
12Separate the logical casesL54–54
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L54
split
13Use earlier factsL55–59
14Calculate and transport equalitiesL60–61
15Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact htrace_parts_left
16Separate the logical casesL63–64
17Establish hmate_secondL65–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L65
have hmate_second : m = e - L66
specialize beta_at_unique u - L67
specialize beta_at_unique v - L68
specialize beta_at_unique a - L69
specialize beta_at_unique m - L70
specialize beta_at_unique e - L71
apply beta_at_unique - L72
rewrite hreflect_right_left_right at hinverse - L73
rewrite hreflect_right_left_right at hinverse - L74
exact hinverse
18Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
exact hforward
19Construct an explicit witnessL76–76
Supply the displayed value, then prove that it has the required property.
- L76
exists (S l)
20Separate the logical casesL77–77
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L77
split
21Use earlier factsL78–79
22Calculate and transport equalitiesL80–81
23Use earlier factsL82–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L82
exact htrace_parts_right_left
24Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
cases hreflect_right_right
25Establish hold_occurrenceL84–91
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hclosed.
- L84
have hold_occurrence : ContainsPrefix(b,c,l,m)Definitions: ContainsPrefix(b,c,l,m)Original native command in the exact edition - L85
specialize hclosed q - L86
specialize hclosed s - L87
specialize hclosed m - L88
apply hclosed - L89
exact hreflect_right_right_left - L90
exact hreflect_right_right_right - L91
exact hinverse
26Separate the logical casesL92–93
27Construct an explicit witnessL94–94
Supply the displayed value, then prove that it has the required property.
- L94
exists x
28Separate the logical casesL95–95
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L95
split
29Establish hliftL96–105
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le succ.
Original defined command ledger · 109 lines
- 0001
intro u - 0002
intro v - 0003
intro b - 0004
intro c - 0005
intro z - 0006
intro d - 0007
intro l - 0008
intro a - 0009
intro e - 0010
intro htrace - 0011
intro hclosed - 0012
intro hforward - 0013
intro hback - 0014
have htrace_parts : BetaAt(z,d,l,a) ∧ (BetaAt(z,d,S l,e) ∧ (∀ 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 (a) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_closure_trace_first. z = wpo_beta_quotient_closure_trace_first * S ((S (l)) * d) + (a))) /\ ((((exists wpo_beta_height_closure_trace_second. wpo_beta_height_closure_trace_second + S (e) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_closure_trace_second. z = wpo_beta_quotient_closure_trace_second * S ((S (S (l))) * d) + (e))) /\ (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 hinverse - 0024
have hreflect_all : ∀ q. ∀ s. Lt(q,S S l) → BetaAt(z,d,q,s) → q = S l ∧ s = e ∨ (q = l ∧ s = a ∨ 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 = e) \/ ((q = l /\ s = a) \/ ((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 a - 0031
specialize beta_prefix_append_two_reflect e - 0032
apply beta_prefix_append_two_reflect - 0033
exact htrace - 0034
have hreflect : q = S l ∧ s = e ∨ (q = l ∧ s = a ∨ Lt(q,l) ∧ BetaAt(b,c,q,s))Exact native replay line
have hreflect : ((q = S (l) /\ s = e) \/ ((q = l /\ s = a) \/ ((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_first : m = a - 0043
specialize beta_at_unique u - 0044
specialize beta_at_unique v - 0045
specialize beta_at_unique e - 0046
specialize beta_at_unique m - 0047
specialize beta_at_unique a - 0048
apply beta_at_unique - 0049
rewrite hreflect_left_right at hinverse - 0050
rewrite hreflect_left_right at hinverse - 0051
exact hinverse - 0052
exact hback - 0053
exists l - 0054
split - 0055
specialize le_succ (S l) - 0056
specialize le_succ (S l) - 0057
apply le_succ - 0058
specialize le_refl (S l) - 0059
exact le_refl - 0060
rewrite hmate_first - 0061
rewrite hmate_first - 0062
exact htrace_parts_left - 0063
cases hreflect_right - 0064
cases hreflect_right_left - 0065
have hmate_second : m = e - 0066
specialize beta_at_unique u - 0067
specialize beta_at_unique v - 0068
specialize beta_at_unique a - 0069
specialize beta_at_unique m - 0070
specialize beta_at_unique e - 0071
apply beta_at_unique - 0072
rewrite hreflect_right_left_right at hinverse - 0073
rewrite hreflect_right_left_right at hinverse - 0074
exact hinverse - 0075
exact hforward - 0076
exists (S l) - 0077
split - 0078
specialize le_refl (S (S l)) - 0079
exact le_refl - 0080
rewrite hmate_second - 0081
rewrite hmate_second - 0082
exact htrace_parts_right_left - 0083
cases hreflect_right_right - 0084
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)))) - 0085
specialize hclosed q - 0086
specialize hclosed s - 0087
specialize hclosed m - 0088
apply hclosed - 0089
exact hreflect_right_right_left - 0090
exact hreflect_right_right_right - 0091
exact hinverse - 0092
cases hold_occurrence - 0093
cases hold_occurrence_witness - 0094
exists x - 0095
split - 0096
have hlift : Lt(x,S l)Exact native replay line
have hlift : exists h. h + S x = S l - 0097
specialize le_succ (S x) - 0098
specialize le_succ l - 0099
apply le_succ - 0100
exact hold_occurrence_witness_left - 0101
specialize le_succ (S x) - 0102
specialize le_succ (S l) - 0103
apply le_succ - 0104
exact hlift - 0105
specialize htrace_parts_right_right x - 0106
specialize htrace_parts_right_right m - 0107
apply htrace_parts_right_right - 0108
exact hold_occurrence_witness_left - 0109
exact hold_occurrence_witness_right