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 b c l n. (exists h. h + S l = n) -> ~(forall fom_value_impossible_cover. (exists fom_gap_impossible_cover_value_bound. fom_gap_impossible_cover_value_bound + S (fom_value_impossible_cover) = n) -> exists fom_index_impossible_cover. ((exists fom_gap_impossible_cover_index_bound. fom_gap_impossible_cover_index_bound + S (fom_index_impossible_cover) = l) /\ (((exists fom_beta_height_impossible_cover_entry. fom_beta_height_impossible_cover_entry + S (fom_value_impossible_cover) = S ((S (fom_index_impossible_cover)) * c)) /\ exists fom_beta_quotient_impossible_cover_entry. b = fom_beta_quotient_impossible_cover_entry * S ((S (fom_index_impossible_cover)) * c) + (fom_value_impossible_cover)))))Structural proof guide
Generated structural guide
A prefix shorter than the target interval cannot cover every target value.
Use the direct prerequisites finite_inverse_choice_prefix_exists, finite_inverse_choice_bounded_into, finite_inverse_choice_injective, finite_bounded_injective_surjective, le_trans, le_succ, le_refl, beta_at_unique, lt_irrefl_expanded as previously established PA formulas.
The proof proceeds by case analysis (8), intermediate claims (13), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0094 finite_inverse_choice_prefix_exists PA0095 finite_inverse_choice_bounded_into PA0096 finite_inverse_choice_injective PA004W finite_bounded_injective_surjective PA000R le_trans PA002O le_succ PA001A le_refl PA002F beta_at_unique PA0010 lt_irrefl_expandedDirect 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 (9)
01Fix variables and assumptionsL1–6
02Establish hchoice_existsL7–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite inverse choice prefix exists.
03Separate the logical casesL14–15
04Establish hboundedL16–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite inverse choice bounded into.
- L16
- L17
specialize finite_inverse_choice_bounded_into b - L18
specialize finite_inverse_choice_bounded_into c - L19
specialize finite_inverse_choice_bounded_into l - L20
specialize finite_inverse_choice_bounded_into x - L21
specialize finite_inverse_choice_bounded_into x1 - L22
specialize finite_inverse_choice_bounded_into n - L23
apply finite_inverse_choice_bounded_into - L24
exact hchoice_exists_witness_witness
05Establish hinjectiveL25–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite inverse choice injective.
- L25
have hinjective : InjectivePrefix(x,x1,n)Definitions: InjectivePrefix - L26
specialize finite_inverse_choice_injective b - L27
specialize finite_inverse_choice_injective c - L28
specialize finite_inverse_choice_injective l - L29
specialize finite_inverse_choice_injective x - L30
specialize finite_inverse_choice_injective x1 - L31
specialize finite_inverse_choice_injective n - L32
apply finite_inverse_choice_injective - L33
exact hchoice_exists_witness_witness
06Establish hbounded_allL34–35
07Establish hbounded_smallL36–38
Establish this local claim before using it. It is not an additional assumption.
- L36
have hbounded_small : BoundedPrefix(x,x1,S l)Definitions: BoundedPrefix - L37
intro i - L38
intro hi
08Establish hinL39–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
09Establish hentryL47–49
10Separate the logical casesL50–51
11Construct an explicit witnessL52–52
Supply the displayed value, then prove that it has the required property.
- L52
exists x2
12Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
split
13Use earlier factsL54–58
14Establish hinjective_smallL59–68
15Use earlier factsL69–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
16Use earlier factsL79–84
17Establish hsurjectiveL85–92
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite bounded injective surjective.
- L85
have hsurjective : SurjectivePrefix(x,x1,S l)Definitions: SurjectivePrefix - L86
specialize finite_bounded_injective_surjective (S l) - L87
specialize finite_bounded_injective_surjective x - L88
specialize finite_bounded_injective_surjective x1 - L89
apply finite_bounded_injective_surjective - L90
exact hbounded_small - L91
exact hinjective_small - L92
specialize hsurjective l
18Establish hoccursL93–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsurjective.
- L93
have hoccurs : exists i. ((exists h. h + S i = S l) /\ (((exists ff_h_impossible_last_entry. ff_h_impossible_last_entry + S (l) = S ((S (i)) * x1)) /\ exists ff_q_impossible_last_entry. x = ff_q_impossible_last_entry * S ((S (i)) * x1) + (l)))) - L94
apply hsurjective - L95
specialize le_refl (S l) - L96
exact le_refl
19Separate the logical casesL97–98
20Establish hindex_nL99–106
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
21Establish hstoredL107–109
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hbounded.
22Separate the logical casesL110–111
23Establish hlvL112–121
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L112
have hlv : l = x3 - L113
specialize beta_at_unique x - L114
specialize beta_at_unique x1 - L115
specialize beta_at_unique x2 - L116
specialize beta_at_unique l - L117
specialize beta_at_unique x3 - L118
apply beta_at_unique - L119
exact hoccurs_witness_right - L120
exact hstored_witness_left - L121
rewrite <- hlv at hstored_witness_right
Original exact command ledger · 124 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro n - 0005
intro hln - 0006
intro hcover - 0007
have hchoice_exists : exists z d. (forall fom_value_impossible_choice. (exists fom_gap_impossible_choice_value_bound. fom_gap_impossible_choice_value_bound + S (fom_value_impossible_choice) = n) -> exists fom_index_impossible_choice. ((((exists fom_beta_height_impossible_choice_choice_entry. fom_beta_height_impossible_choice_choice_entry + S (fom_index_impossible_choice) = S ((S (fom_value_impossible_choice)) * d)) /\ exists fom_beta_quotient_impossible_choice_choice_entry. z = fom_beta_quotient_impossible_choice_choice_entry * S ((S (fom_value_impossible_choice)) * d) + (fom_index_impossible_choice))) /\ ((exists fom_gap_impossible_choice_index_bound. fom_gap_impossible_choice_index_bound + S (fom_index_impossible_choice) = l) /\ (((exists fom_beta_height_impossible_choice_source_entry. fom_beta_height_impossible_choice_source_entry + S (fom_value_impossible_choice) = S ((S (fom_index_impossible_choice)) * c)) /\ exists fom_beta_quotient_impossible_choice_source_entry. b = fom_beta_quotient_impossible_choice_source_entry * S ((S (fom_index_impossible_choice)) * c) + (fom_value_impossible_choice)))))) - 0008
specialize finite_inverse_choice_prefix_exists b - 0009
specialize finite_inverse_choice_prefix_exists c - 0010
specialize finite_inverse_choice_prefix_exists l - 0011
specialize finite_inverse_choice_prefix_exists n - 0012
apply finite_inverse_choice_prefix_exists - 0013
exact hcover - 0014
cases hchoice_exists - 0015
cases hchoice_exists_witness - 0016
have hbounded : forall fom_index_impossible_bounded. (exists fom_gap_impossible_bounded_index_bound. fom_gap_impossible_bounded_index_bound + S (fom_index_impossible_bounded) = n) -> exists fom_value_impossible_bounded. ((((exists fom_beta_height_impossible_bounded_entry. fom_beta_height_impossible_bounded_entry + S (fom_value_impossible_bounded) = S ((S (fom_index_impossible_bounded)) * x1)) /\ exists fom_beta_quotient_impossible_bounded_entry. x = fom_beta_quotient_impossible_bounded_entry * S ((S (fom_index_impossible_bounded)) * x1) + (fom_value_impossible_bounded))) /\ (exists fom_gap_impossible_bounded_value_bound. fom_gap_impossible_bounded_value_bound + S (fom_value_impossible_bounded) = l)) - 0017
specialize finite_inverse_choice_bounded_into b - 0018
specialize finite_inverse_choice_bounded_into c - 0019
specialize finite_inverse_choice_bounded_into l - 0020
specialize finite_inverse_choice_bounded_into x - 0021
specialize finite_inverse_choice_bounded_into x1 - 0022
specialize finite_inverse_choice_bounded_into n - 0023
apply finite_inverse_choice_bounded_into - 0024
exact hchoice_exists_witness_witness - 0025
have hinjective : forall fp_i_impossible_injective fp_j_impossible_injective fp_value_impossible_injective. (exists fp_gap_impossible_injective_i. fp_gap_impossible_injective_i + S fp_i_impossible_injective = n) -> (exists fp_gap_impossible_injective_j. fp_gap_impossible_injective_j + S fp_j_impossible_injective = n) -> (((exists ff_h_impossible_injective_left. ff_h_impossible_injective_left + S (fp_value_impossible_injective) = S ((S (fp_i_impossible_injective)) * x1)) /\ exists ff_q_impossible_injective_left. x = ff_q_impossible_injective_left * S ((S (fp_i_impossible_injective)) * x1) + (fp_value_impossible_injective))) -> (((exists ff_h_impossible_injective_right. ff_h_impossible_injective_right + S (fp_value_impossible_injective) = S ((S (fp_j_impossible_injective)) * x1)) /\ exists ff_q_impossible_injective_right. x = ff_q_impossible_injective_right * S ((S (fp_j_impossible_injective)) * x1) + (fp_value_impossible_injective))) -> fp_i_impossible_injective = fp_j_impossible_injective - 0026
specialize finite_inverse_choice_injective b - 0027
specialize finite_inverse_choice_injective c - 0028
specialize finite_inverse_choice_injective l - 0029
specialize finite_inverse_choice_injective x - 0030
specialize finite_inverse_choice_injective x1 - 0031
specialize finite_inverse_choice_injective n - 0032
apply finite_inverse_choice_injective - 0033
exact hchoice_exists_witness_witness - 0034
have hbounded_all : forall fom_index_impossible_bounded. (exists fom_gap_impossible_bounded_index_bound. fom_gap_impossible_bounded_index_bound + S (fom_index_impossible_bounded) = n) -> exists fom_value_impossible_bounded. ((((exists fom_beta_height_impossible_bounded_entry. fom_beta_height_impossible_bounded_entry + S (fom_value_impossible_bounded) = S ((S (fom_index_impossible_bounded)) * x1)) /\ exists fom_beta_quotient_impossible_bounded_entry. x = fom_beta_quotient_impossible_bounded_entry * S ((S (fom_index_impossible_bounded)) * x1) + (fom_value_impossible_bounded))) /\ (exists fom_gap_impossible_bounded_value_bound. fom_gap_impossible_bounded_value_bound + S (fom_value_impossible_bounded) = l)) - 0035
exact hbounded - 0036
have hbounded_small : forall fp_i_impossible_small_bounded. (exists fp_gap_impossible_small_bounded_index. fp_gap_impossible_small_bounded_index + S fp_i_impossible_small_bounded = S l) -> exists fp_value_impossible_small_bounded. ((((exists ff_h_impossible_small_bounded_entry. ff_h_impossible_small_bounded_entry + S (fp_value_impossible_small_bounded) = S ((S (fp_i_impossible_small_bounded)) * x1)) /\ exists ff_q_impossible_small_bounded_entry. x = ff_q_impossible_small_bounded_entry * S ((S (fp_i_impossible_small_bounded)) * x1) + (fp_value_impossible_small_bounded))) /\ (exists fp_gap_impossible_small_bounded_value. fp_gap_impossible_small_bounded_value + S fp_value_impossible_small_bounded = S l)) - 0037
intro i - 0038
intro hi - 0039
have hin : exists h. h + S i = n - 0040
specialize le_trans (S i) - 0041
specialize le_trans (S l) - 0042
specialize le_trans n - 0043
apply le_trans - 0044
exact hi - 0045
exact hln - 0046
specialize hbounded_all i - 0047
have hentry : exists v. (((exists h. h + S v = S ((S i) * x1)) /\ exists q. x = q * S ((S i) * x1) + v) /\ exists h. h + S v = l) - 0048
apply hbounded_all - 0049
exact hin - 0050
cases hentry - 0051
cases hentry_witness - 0052
exists x2 - 0053
split - 0054
exact hentry_witness_left - 0055
specialize le_succ (S x2) - 0056
specialize le_succ l - 0057
apply le_succ - 0058
exact hentry_witness_right - 0059
have hinjective_small : forall fp_i_impossible_small_injective fp_j_impossible_small_injective fp_value_impossible_small_injective. (exists fp_gap_impossible_small_injective_i. fp_gap_impossible_small_injective_i + S fp_i_impossible_small_injective = S l) -> (exists fp_gap_impossible_small_injective_j. fp_gap_impossible_small_injective_j + S fp_j_impossible_small_injective = S l) -> (((exists ff_h_impossible_small_injective_left. ff_h_impossible_small_injective_left + S (fp_value_impossible_small_injective) = S ((S (fp_i_impossible_small_injective)) * x1)) /\ exists ff_q_impossible_small_injective_left. x = ff_q_impossible_small_injective_left * S ((S (fp_i_impossible_small_injective)) * x1) + (fp_value_impossible_small_injective))) -> (((exists ff_h_impossible_small_injective_right. ff_h_impossible_small_injective_right + S (fp_value_impossible_small_injective) = S ((S (fp_j_impossible_small_injective)) * x1)) /\ exists ff_q_impossible_small_injective_right. x = ff_q_impossible_small_injective_right * S ((S (fp_j_impossible_small_injective)) * x1) + (fp_value_impossible_small_injective))) -> fp_i_impossible_small_injective = fp_j_impossible_small_injective - 0060
intro i - 0061
intro j - 0062
intro v - 0063
intro hi - 0064
intro hj - 0065
intro hvi - 0066
intro hvj - 0067
specialize hinjective i - 0068
specialize hinjective j - 0069
specialize hinjective v - 0070
apply hinjective - 0071
specialize le_trans (S i) - 0072
specialize le_trans (S l) - 0073
specialize le_trans n - 0074
apply le_trans - 0075
exact hi - 0076
exact hln - 0077
specialize le_trans (S j) - 0078
specialize le_trans (S l) - 0079
specialize le_trans n - 0080
apply le_trans - 0081
exact hj - 0082
exact hln - 0083
exact hvi - 0084
exact hvj - 0085
have hsurjective : forall fp_value_impossible_small_surjective. (exists fp_gap_impossible_small_surjective_value. fp_gap_impossible_small_surjective_value + S fp_value_impossible_small_surjective = S l) -> exists fp_i_impossible_small_surjective. ((exists fp_gap_impossible_small_surjective_index. fp_gap_impossible_small_surjective_index + S fp_i_impossible_small_surjective = S l) /\ (((exists ff_h_impossible_small_surjective_entry. ff_h_impossible_small_surjective_entry + S (fp_value_impossible_small_surjective) = S ((S (fp_i_impossible_small_surjective)) * x1)) /\ exists ff_q_impossible_small_surjective_entry. x = ff_q_impossible_small_surjective_entry * S ((S (fp_i_impossible_small_surjective)) * x1) + (fp_value_impossible_small_surjective)))) - 0086
specialize finite_bounded_injective_surjective (S l) - 0087
specialize finite_bounded_injective_surjective x - 0088
specialize finite_bounded_injective_surjective x1 - 0089
apply finite_bounded_injective_surjective - 0090
exact hbounded_small - 0091
exact hinjective_small - 0092
specialize hsurjective l - 0093
have hoccurs : exists i. ((exists h. h + S i = S l) /\ (((exists ff_h_impossible_last_entry. ff_h_impossible_last_entry + S (l) = S ((S (i)) * x1)) /\ exists ff_q_impossible_last_entry. x = ff_q_impossible_last_entry * S ((S (i)) * x1) + (l)))) - 0094
apply hsurjective - 0095
specialize le_refl (S l) - 0096
exact le_refl - 0097
cases hoccurs - 0098
cases hoccurs_witness - 0099
have hindex_n : exists h. h + S x2 = n - 0100
specialize le_trans (S x2) - 0101
specialize le_trans (S l) - 0102
specialize le_trans n - 0103
apply le_trans - 0104
exact hoccurs_witness_left - 0105
exact hln - 0106
specialize hbounded x2 - 0107
have hstored : exists v. ((((exists ff_h_impossible_stored_entry. ff_h_impossible_stored_entry + S (v) = S ((S (x2)) * x1)) /\ exists ff_q_impossible_stored_entry. x = ff_q_impossible_stored_entry * S ((S (x2)) * x1) + (v))) /\ exists h. h + S v = l) - 0108
apply hbounded - 0109
exact hindex_n - 0110
cases hstored - 0111
cases hstored_witness - 0112
have hlv : l = x3 - 0113
specialize beta_at_unique x - 0114
specialize beta_at_unique x1 - 0115
specialize beta_at_unique x2 - 0116
specialize beta_at_unique l - 0117
specialize beta_at_unique x3 - 0118
apply beta_at_unique - 0119
exact hoccurs_witness_right - 0120
exact hstored_witness_left - 0121
rewrite <- hlv at hstored_witness_right - 0122
specialize lt_irrefl_expanded l - 0123
apply lt_irrefl_expanded - 0124
exact hstored_witness_right