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
∀ p. ∀ n. ∀ b. ∀ c. ∀ i. ∀ j. p = S n → InversePrefix(p,n,b,c,n) → Lt(i,n) → BetaAt(b,c,i,j) → Lt(j,n) ∧ BetaAt(b,c,j,i)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
5 occurrences
In local proof propositions
2 occurrences
Exact expanded native-PA statement
forall p n b c i j. p = S n -> (forall wip_index_involutive_prefix. (exists wip_gap_involutive_prefix_prefix_bound. wip_gap_involutive_prefix_prefix_bound + S wip_index_involutive_prefix = n) -> exists wip_mate_involutive_prefix. ((((exists wip_beta_height_involutive_prefix_decoded. wip_beta_height_involutive_prefix_decoded + S (wip_mate_involutive_prefix) = S ((S (wip_index_involutive_prefix)) * c)) /\ exists wip_beta_quotient_involutive_prefix_decoded. b = wip_beta_quotient_involutive_prefix_decoded * S ((S (wip_index_involutive_prefix)) * c) + (wip_mate_involutive_prefix))) /\ ((exists wip_gap_involutive_prefix_inverse_index_bound. wip_gap_involutive_prefix_inverse_index_bound + S wip_index_involutive_prefix = n) /\ ((exists wip_gap_involutive_prefix_inverse_mate_bound. wip_gap_involutive_prefix_inverse_mate_bound + S wip_mate_involutive_prefix = n) /\ (exists wip_mod_left_involutive_prefix_inverse_mod wip_mod_right_involutive_prefix_inverse_mod. ((S wip_index_involutive_prefix) * S wip_mate_involutive_prefix) + p * wip_mod_left_involutive_prefix_inverse_mod = 1 + p * wip_mod_right_involutive_prefix_inverse_mod))))) -> (exists wip_gap_involutive_index_bound. wip_gap_involutive_index_bound + S i = n) -> (((exists wip_beta_height_involutive_source. wip_beta_height_involutive_source + S (j) = S ((S (i)) * c)) /\ exists wip_beta_quotient_involutive_source. b = wip_beta_quotient_involutive_source * S ((S (i)) * c) + (j))) -> ((exists wip_gap_involutive_mate_bound. wip_gap_involutive_mate_bound + S j = n) /\ (((exists wip_beta_height_involutive_back. wip_beta_height_involutive_back + S (i) = S ((S (j)) * c)) /\ exists wip_beta_quotient_involutive_back. b = wip_beta_quotient_involutive_back * S ((S (j)) * c) + (i))))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 (3)
01Fix variables and assumptionsL1–10
02Establish hforwardL11–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply inverse prefix entry sound.
- L11
have hforward : InverseIndex(p,n,i,j)Definitions: InverseIndex(p,n,i,j)Original native command in the exact edition - L12
specialize inverse_prefix_entry_sound p - L13
specialize inverse_prefix_entry_sound n - L14
specialize inverse_prefix_entry_sound b - L15
specialize inverse_prefix_entry_sound c - L16
specialize inverse_prefix_entry_sound n - L17
specialize inverse_prefix_entry_sound i - L18
specialize inverse_prefix_entry_sound j - L19
apply inverse_prefix_entry_sound - L20
exact hprefix
03Use earlier factsL21–22
04Establish hreverseL23–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply inverse index symmetric.
- L23
have hreverse : InverseIndex(p,n,j,i)Definitions: InverseIndex(p,n,j,i)Original native command in the exact edition - L24
specialize inverse_index_symmetric p - L25
specialize inverse_index_symmetric n - L26
specialize inverse_index_symmetric i - L27
specialize inverse_index_symmetric j - L28
apply inverse_index_symmetric - L29
exact hforward
05Separate the logical casesL30–32
06Use earlier factsL33–42
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
exact hforward_right_left - L34
specialize inverse_prefix_extensional p - L35
specialize inverse_prefix_extensional n - L36
specialize inverse_prefix_extensional b - L37
specialize inverse_prefix_extensional c - L38
specialize inverse_prefix_extensional n - L39
specialize inverse_prefix_extensional j - L40
specialize inverse_prefix_extensional i - L41
apply inverse_prefix_extensional - L42
exact hpn
Original defined command ledger · 45 lines
- 0001
intro p - 0002
intro n - 0003
intro b - 0004
intro c - 0005
intro i - 0006
intro j - 0007
intro hpn - 0008
intro hprefix - 0009
intro hi - 0010
intro hat - 0011
have hforward : InverseIndex(p,n,i,j)Exact native replay line
have hforward : (exists wip_gap_involutive_forward_index_bound. wip_gap_involutive_forward_index_bound + S i = n) /\ ((exists wip_gap_involutive_forward_mate_bound. wip_gap_involutive_forward_mate_bound + S j = n) /\ (exists wip_mod_left_involutive_forward_mod wip_mod_right_involutive_forward_mod. ((S i) * S j) + p * wip_mod_left_involutive_forward_mod = 1 + p * wip_mod_right_involutive_forward_mod)) - 0012
specialize inverse_prefix_entry_sound p - 0013
specialize inverse_prefix_entry_sound n - 0014
specialize inverse_prefix_entry_sound b - 0015
specialize inverse_prefix_entry_sound c - 0016
specialize inverse_prefix_entry_sound n - 0017
specialize inverse_prefix_entry_sound i - 0018
specialize inverse_prefix_entry_sound j - 0019
apply inverse_prefix_entry_sound - 0020
exact hprefix - 0021
exact hi - 0022
exact hat - 0023
have hreverse : InverseIndex(p,n,j,i)Exact native replay line
have hreverse : (exists wip_gap_involutive_reverse_index_bound. wip_gap_involutive_reverse_index_bound + S j = n) /\ ((exists wip_gap_involutive_reverse_mate_bound. wip_gap_involutive_reverse_mate_bound + S i = n) /\ (exists wip_mod_left_involutive_reverse_mod wip_mod_right_involutive_reverse_mod. ((S j) * S i) + p * wip_mod_left_involutive_reverse_mod = 1 + p * wip_mod_right_involutive_reverse_mod)) - 0024
specialize inverse_index_symmetric p - 0025
specialize inverse_index_symmetric n - 0026
specialize inverse_index_symmetric i - 0027
specialize inverse_index_symmetric j - 0028
apply inverse_index_symmetric - 0029
exact hforward - 0030
cases hforward - 0031
cases hforward_right - 0032
split - 0033
exact hforward_right_left - 0034
specialize inverse_prefix_extensional p - 0035
specialize inverse_prefix_extensional n - 0036
specialize inverse_prefix_extensional b - 0037
specialize inverse_prefix_extensional c - 0038
specialize inverse_prefix_extensional n - 0039
specialize inverse_prefix_extensional j - 0040
specialize inverse_prefix_extensional i - 0041
apply inverse_prefix_extensional - 0042
exact hpn - 0043
exact hprefix - 0044
exact hforward_right_left - 0045
exact hreverse