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 p n b c i j. p = S n -> ((~(p = 1) /\ forall wip_prime_left_orbit_prime wip_prime_right_orbit_prime. p = wip_prime_left_orbit_prime * wip_prime_right_orbit_prime -> wip_prime_left_orbit_prime = 1 \/ wip_prime_right_orbit_prime = 1)) -> (forall wip_index_orbit_prefix. (exists wip_gap_orbit_prefix_prefix_bound. wip_gap_orbit_prefix_prefix_bound + S wip_index_orbit_prefix = n) -> exists wip_mate_orbit_prefix. ((((exists wip_beta_height_orbit_prefix_decoded. wip_beta_height_orbit_prefix_decoded + S (wip_mate_orbit_prefix) = S ((S (wip_index_orbit_prefix)) * c)) /\ exists wip_beta_quotient_orbit_prefix_decoded. b = wip_beta_quotient_orbit_prefix_decoded * S ((S (wip_index_orbit_prefix)) * c) + (wip_mate_orbit_prefix))) /\ ((exists wip_gap_orbit_prefix_inverse_index_bound. wip_gap_orbit_prefix_inverse_index_bound + S wip_index_orbit_prefix = n) /\ ((exists wip_gap_orbit_prefix_inverse_mate_bound. wip_gap_orbit_prefix_inverse_mate_bound + S wip_mate_orbit_prefix = n) /\ (exists wip_mod_left_orbit_prefix_inverse_mod wip_mod_right_orbit_prefix_inverse_mod. ((S wip_index_orbit_prefix) * S wip_mate_orbit_prefix) + p * wip_mod_left_orbit_prefix_inverse_mod = 1 + p * wip_mod_right_orbit_prefix_inverse_mod))))) -> (exists wip_gap_orbit_source_bound. wip_gap_orbit_source_bound + S i = n) -> (((exists wip_beta_height_orbit_source_entry. wip_beta_height_orbit_source_entry + S (j) = S ((S (i)) * c)) /\ exists wip_beta_quotient_orbit_source_entry. b = wip_beta_quotient_orbit_source_entry * S ((S (i)) * c) + (j))) -> ((~(i = 0) /\ ~((S i) = n))) -> ((~(j = 0) /\ ~((S j) = n)))Structural proof guide
Generated structural guide
The decoded mate of a nonendpoint inverse index is also a nonendpoint.
Use the direct prerequisites prime_inverse_prefix_nonendpoint_not_fixed, inverse_prefix_involutive, prime_is_succ_succ, succ_injective, inverse_prefix_zero_fixed, inverse_prefix_last_fixed, beta_at_unique as previously established PA formulas.
The proof proceeds by case analysis (2), intermediate claims (15), equality transport (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00AI prime_inverse_prefix_nonendpoint_not_fixed PA00AN inverse_prefix_involutive PA0061 prime_is_succ_succ PA003V succ_injective PA00AO inverse_prefix_zero_fixed PA00AP inverse_prefix_last_fixed PA002F beta_at_uniqueDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
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 (7)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–12
03Establish hnonfixedL13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime inverse prefix nonendpoint not fixed.
- L13
have hnonfixed : ~(i = j) - L14
specialize prime_inverse_prefix_nonendpoint_not_fixed p - L15
specialize prime_inverse_prefix_nonendpoint_not_fixed n - L16
specialize prime_inverse_prefix_nonendpoint_not_fixed b - L17
specialize prime_inverse_prefix_nonendpoint_not_fixed c - L18
specialize prime_inverse_prefix_nonendpoint_not_fixed i - L19
specialize prime_inverse_prefix_nonendpoint_not_fixed j - L20
intro hij - L21
apply prime_inverse_prefix_nonendpoint_not_fixed - L22
exact hpn
04Use earlier factsL23–28
05Establish horbitL29–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply inverse prefix involutive.
- L29
have horbit : ((exists wip_gap_orbit_mate_bound. wip_gap_orbit_mate_bound + S j = n) /\ (((exists wip_beta_height_orbit_back_entry. wip_beta_height_orbit_back_entry + S (i) = S ((S (j)) * c)) /\ exists wip_beta_quotient_orbit_back_entry. b = wip_beta_quotient_orbit_back_entry * S ((S (j)) * c) + (i)))) - L30
specialize inverse_prefix_involutive p - L31
specialize inverse_prefix_involutive n - L32
specialize inverse_prefix_involutive b - L33
specialize inverse_prefix_involutive c - L34
specialize inverse_prefix_involutive i - L35
specialize inverse_prefix_involutive j - L36
apply inverse_prefix_involutive - L37
exact hpn - L38
exact hprefix
06Use earlier factsL39–40
07Separate the logical casesL41–41
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L41
cases horbit
08Establish hsucc_shapeL42–43
09Establish hsucc_mateL44–45
10Establish hprime_shapeL46–49
11Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
cases hprime_shape
12Establish hnkL51–58
13Establish hzeroL59–68
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply inverse prefix zero fixed.
- L59
have hzero : ((exists wio_beta_height_orbit_zero_fixed. wio_beta_height_orbit_zero_fixed + S (0) = S ((S (0)) * c)) /\ exists wio_beta_quotient_orbit_zero_fixed. b = wio_beta_quotient_orbit_zero_fixed * S ((S (0)) * c) + (0)) - L60
specialize inverse_prefix_zero_fixed p - L61
specialize inverse_prefix_zero_fixed n - L62
specialize inverse_prefix_zero_fixed x - L63
specialize inverse_prefix_zero_fixed b - L64
specialize inverse_prefix_zero_fixed c - L65
apply inverse_prefix_zero_fixed - L66
exact hpn - L67
exact hnk - L68
exact hprefix
14Establish hlastL69–78
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply inverse prefix last fixed.
- L69
have hlast : ((exists wip_beta_height_orbit_last_fixed. wip_beta_height_orbit_last_fixed + S (x) = S ((S (x)) * c)) /\ exists wip_beta_quotient_orbit_last_fixed. b = wip_beta_quotient_orbit_last_fixed * S ((S (x)) * c) + (x)) - L70
specialize inverse_prefix_last_fixed p - L71
specialize inverse_prefix_last_fixed n - L72
specialize inverse_prefix_last_fixed x - L73
specialize inverse_prefix_last_fixed b - L74
specialize inverse_prefix_last_fixed c - L75
apply inverse_prefix_last_fixed - L76
exact hpn - L77
exact hnk - L78
exact hprefix
15Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
split
16Fix variables and assumptionsL80–80
Work with arbitrary variables or the premises of the current implication.
- L80
intro hjzero
17Establish hback_zero_rawL81–82
Establish this local claim before using it. It is not an additional assumption.
18Establish hback_zeroL83–86
Establish this local claim before using it. It is not an additional assumption.
- L83
have hback_zero : ((exists wio_beta_height_orbit_back_zero. wio_beta_height_orbit_back_zero + S (i) = S ((S (0)) * c)) /\ exists wio_beta_quotient_orbit_back_zero. b = wio_beta_quotient_orbit_back_zero * S ((S (0)) * c) + (i)) - L84
rewrite hjzero at hback_zero_raw - L85
rewrite hjzero at hback_zero_raw - L86
exact hback_zero_raw
19Establish hi0L87–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
20Calculate and transport equalitiesL97–97
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L97
trans 0
21Use earlier factsL98–98
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L98
exact hi0
22Calculate and transport equalitiesL99–99
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L99
symm
23Use earlier factsL100–100
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L100
exact hjzero
24Fix variables and assumptionsL101–101
Work with arbitrary variables or the premises of the current implication.
- L101
intro hjlast
25Establish hjxL102–108
26Establish hback_last_rawL109–110
Establish this local claim before using it. It is not an additional assumption.
27Establish hback_lastL111–114
Establish this local claim before using it. It is not an additional assumption.
- L111
have hback_last : ((exists wip_beta_height_orbit_back_last. wip_beta_height_orbit_back_last + S (i) = S ((S (x)) * c)) /\ exists wip_beta_quotient_orbit_back_last. b = wip_beta_quotient_orbit_back_last * S ((S (x)) * c) + (i)) - L112
rewrite hjx at hback_last_raw - L113
rewrite hjx at hback_last_raw - L114
exact hback_last_raw
28Establish hixL115–124
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
29Calculate and transport equalitiesL125–125
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L125
trans x
30Use earlier factsL126–126
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L126
exact hix
31Calculate and transport equalitiesL127–127
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L127
symm
32Use earlier factsL128–128
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L128
exact hjx
Original exact command ledger · 128 lines
- 0001
intro p - 0002
intro n - 0003
intro b - 0004
intro c - 0005
intro i - 0006
intro j - 0007
intro hpn - 0008
intro hp - 0009
intro hprefix - 0010
intro hi - 0011
intro hat - 0012
intro hnonendpoint - 0013
have hnonfixed : ~(i = j) - 0014
specialize prime_inverse_prefix_nonendpoint_not_fixed p - 0015
specialize prime_inverse_prefix_nonendpoint_not_fixed n - 0016
specialize prime_inverse_prefix_nonendpoint_not_fixed b - 0017
specialize prime_inverse_prefix_nonendpoint_not_fixed c - 0018
specialize prime_inverse_prefix_nonendpoint_not_fixed i - 0019
specialize prime_inverse_prefix_nonendpoint_not_fixed j - 0020
intro hij - 0021
apply prime_inverse_prefix_nonendpoint_not_fixed - 0022
exact hpn - 0023
exact hp - 0024
exact hprefix - 0025
exact hi - 0026
exact hat - 0027
exact hnonendpoint - 0028
exact hij - 0029
have horbit : ((exists wip_gap_orbit_mate_bound. wip_gap_orbit_mate_bound + S j = n) /\ (((exists wip_beta_height_orbit_back_entry. wip_beta_height_orbit_back_entry + S (i) = S ((S (j)) * c)) /\ exists wip_beta_quotient_orbit_back_entry. b = wip_beta_quotient_orbit_back_entry * S ((S (j)) * c) + (i)))) - 0030
specialize inverse_prefix_involutive p - 0031
specialize inverse_prefix_involutive n - 0032
specialize inverse_prefix_involutive b - 0033
specialize inverse_prefix_involutive c - 0034
specialize inverse_prefix_involutive i - 0035
specialize inverse_prefix_involutive j - 0036
apply inverse_prefix_involutive - 0037
exact hpn - 0038
exact hprefix - 0039
exact hi - 0040
exact hat - 0041
cases horbit - 0042
have hsucc_shape : forall a d. S a = S d -> a = d - 0043
exact succ_injective - 0044
have hsucc_mate : forall a d. S a = S d -> a = d - 0045
exact succ_injective - 0046
have hprime_shape : exists k. p = S (S k) - 0047
specialize prime_is_succ_succ p - 0048
apply prime_is_succ_succ - 0049
exact hp - 0050
cases hprime_shape - 0051
have hnk : n = S x - 0052
specialize hsucc_shape n - 0053
specialize hsucc_shape (S x) - 0054
apply hsucc_shape - 0055
trans p - 0056
symm - 0057
exact hpn - 0058
exact hprime_shape_witness - 0059
have hzero : ((exists wio_beta_height_orbit_zero_fixed. wio_beta_height_orbit_zero_fixed + S (0) = S ((S (0)) * c)) /\ exists wio_beta_quotient_orbit_zero_fixed. b = wio_beta_quotient_orbit_zero_fixed * S ((S (0)) * c) + (0)) - 0060
specialize inverse_prefix_zero_fixed p - 0061
specialize inverse_prefix_zero_fixed n - 0062
specialize inverse_prefix_zero_fixed x - 0063
specialize inverse_prefix_zero_fixed b - 0064
specialize inverse_prefix_zero_fixed c - 0065
apply inverse_prefix_zero_fixed - 0066
exact hpn - 0067
exact hnk - 0068
exact hprefix - 0069
have hlast : ((exists wip_beta_height_orbit_last_fixed. wip_beta_height_orbit_last_fixed + S (x) = S ((S (x)) * c)) /\ exists wip_beta_quotient_orbit_last_fixed. b = wip_beta_quotient_orbit_last_fixed * S ((S (x)) * c) + (x)) - 0070
specialize inverse_prefix_last_fixed p - 0071
specialize inverse_prefix_last_fixed n - 0072
specialize inverse_prefix_last_fixed x - 0073
specialize inverse_prefix_last_fixed b - 0074
specialize inverse_prefix_last_fixed c - 0075
apply inverse_prefix_last_fixed - 0076
exact hpn - 0077
exact hnk - 0078
exact hprefix - 0079
split - 0080
intro hjzero - 0081
have hback_zero_raw : ((exists wip_beta_height_orbit_back_entry. wip_beta_height_orbit_back_entry + S (i) = S ((S (j)) * c)) /\ exists wip_beta_quotient_orbit_back_entry. b = wip_beta_quotient_orbit_back_entry * S ((S (j)) * c) + (i)) - 0082
exact horbit_right - 0083
have hback_zero : ((exists wio_beta_height_orbit_back_zero. wio_beta_height_orbit_back_zero + S (i) = S ((S (0)) * c)) /\ exists wio_beta_quotient_orbit_back_zero. b = wio_beta_quotient_orbit_back_zero * S ((S (0)) * c) + (i)) - 0084
rewrite hjzero at hback_zero_raw - 0085
rewrite hjzero at hback_zero_raw - 0086
exact hback_zero_raw - 0087
have hi0 : i = 0 - 0088
specialize beta_at_unique b - 0089
specialize beta_at_unique c - 0090
specialize beta_at_unique 0 - 0091
specialize beta_at_unique i - 0092
specialize beta_at_unique 0 - 0093
apply beta_at_unique - 0094
exact hback_zero - 0095
exact hzero - 0096
apply hnonfixed - 0097
trans 0 - 0098
exact hi0 - 0099
symm - 0100
exact hjzero - 0101
intro hjlast - 0102
have hjx : j = x - 0103
specialize hsucc_mate j - 0104
specialize hsucc_mate x - 0105
apply hsucc_mate - 0106
trans n - 0107
exact hjlast - 0108
exact hnk - 0109
have hback_last_raw : ((exists wip_beta_height_orbit_back_entry. wip_beta_height_orbit_back_entry + S (i) = S ((S (j)) * c)) /\ exists wip_beta_quotient_orbit_back_entry. b = wip_beta_quotient_orbit_back_entry * S ((S (j)) * c) + (i)) - 0110
exact horbit_right - 0111
have hback_last : ((exists wip_beta_height_orbit_back_last. wip_beta_height_orbit_back_last + S (i) = S ((S (x)) * c)) /\ exists wip_beta_quotient_orbit_back_last. b = wip_beta_quotient_orbit_back_last * S ((S (x)) * c) + (i)) - 0112
rewrite hjx at hback_last_raw - 0113
rewrite hjx at hback_last_raw - 0114
exact hback_last_raw - 0115
have hix : i = x - 0116
specialize beta_at_unique b - 0117
specialize beta_at_unique c - 0118
specialize beta_at_unique x - 0119
specialize beta_at_unique i - 0120
specialize beta_at_unique x - 0121
apply beta_at_unique - 0122
exact hback_last - 0123
exact hlast - 0124
apply hnonfixed - 0125
trans x - 0126
exact hix - 0127
symm - 0128
exact hjx