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 first-order arithmetic statement
forall b c l. (((forall pfp_i_extend_oldbounded. (exists pfp_gap_extend_oldboundedindex. pfp_gap_extend_oldboundedindex + S (pfp_i_extend_oldbounded) = (l)) -> exists pfp_a_extend_oldbounded. (((exists ff_h_pfp_extend_oldboundedentry. ff_h_pfp_extend_oldboundedentry + S (pfp_a_extend_oldbounded) = S ((S (pfp_i_extend_oldbounded)) * c)) /\ exists ff_q_pfp_extend_oldboundedentry. b = ff_q_pfp_extend_oldboundedentry * S ((S (pfp_i_extend_oldbounded)) * c) + (pfp_a_extend_oldbounded))) /\ (exists pfp_gap_extend_oldboundedvalue. pfp_gap_extend_oldboundedvalue + S (pfp_a_extend_oldbounded) = (l))) /\ (((forall pfp_i_extend_oldinjective pfp_j_extend_oldinjective pfp_a_extend_oldinjective. (exists pfp_gap_extend_oldinjectivefirst. pfp_gap_extend_oldinjectivefirst + S (pfp_i_extend_oldinjective) = (l)) -> (exists pfp_gap_extend_oldinjectivesecond. pfp_gap_extend_oldinjectivesecond + S (pfp_j_extend_oldinjective) = (l)) -> (((exists ff_h_pfp_extend_oldinjectiveleft. ff_h_pfp_extend_oldinjectiveleft + S (pfp_a_extend_oldinjective) = S ((S (pfp_i_extend_oldinjective)) * c)) /\ exists ff_q_pfp_extend_oldinjectiveleft. b = ff_q_pfp_extend_oldinjectiveleft * S ((S (pfp_i_extend_oldinjective)) * c) + (pfp_a_extend_oldinjective))) -> (((exists ff_h_pfp_extend_oldinjectiveright. ff_h_pfp_extend_oldinjectiveright + S (pfp_a_extend_oldinjective) = S ((S (pfp_j_extend_oldinjective)) * c)) /\ exists ff_q_pfp_extend_oldinjectiveright. b = ff_q_pfp_extend_oldinjectiveright * S ((S (pfp_j_extend_oldinjective)) * c) + (pfp_a_extend_oldinjective))) -> pfp_i_extend_oldinjective = pfp_j_extend_oldinjective) /\ (forall pfp_a_extend_oldsurjective. (exists pfp_gap_extend_oldsurjectivevalue. pfp_gap_extend_oldsurjectivevalue + S (pfp_a_extend_oldsurjective) = (l)) -> exists pfp_i_extend_oldsurjective. (exists pfp_gap_extend_oldsurjectiveindex. pfp_gap_extend_oldsurjectiveindex + S (pfp_i_extend_oldsurjective) = (l)) /\ (((exists ff_h_pfp_extend_oldsurjectiveentry. ff_h_pfp_extend_oldsurjectiveentry + S (pfp_a_extend_oldsurjective) = S ((S (pfp_i_extend_oldsurjective)) * c)) /\ exists ff_q_pfp_extend_oldsurjectiveentry. b = ff_q_pfp_extend_oldsurjectiveentry * S ((S (pfp_i_extend_oldsurjective)) * c) + (pfp_a_extend_oldsurjective)))))))) -> exists d e. ((((forall pfp_i_extend_newbounded. (exists pfp_gap_extend_newboundedindex. pfp_gap_extend_newboundedindex + S (pfp_i_extend_newbounded) = (S l)) -> exists pfp_a_extend_newbounded. (((exists ff_h_pfp_extend_newboundedentry. ff_h_pfp_extend_newboundedentry + S (pfp_a_extend_newbounded) = S ((S (pfp_i_extend_newbounded)) * e)) /\ exists ff_q_pfp_extend_newboundedentry. d = ff_q_pfp_extend_newboundedentry * S ((S (pfp_i_extend_newbounded)) * e) + (pfp_a_extend_newbounded))) /\ (exists pfp_gap_extend_newboundedvalue. pfp_gap_extend_newboundedvalue + S (pfp_a_extend_newbounded) = (S l))) /\ (((forall pfp_i_extend_newinjective pfp_j_extend_newinjective pfp_a_extend_newinjective. (exists pfp_gap_extend_newinjectivefirst. pfp_gap_extend_newinjectivefirst + S (pfp_i_extend_newinjective) = (S l)) -> (exists pfp_gap_extend_newinjectivesecond. pfp_gap_extend_newinjectivesecond + S (pfp_j_extend_newinjective) = (S l)) -> (((exists ff_h_pfp_extend_newinjectiveleft. ff_h_pfp_extend_newinjectiveleft + S (pfp_a_extend_newinjective) = S ((S (pfp_i_extend_newinjective)) * e)) /\ exists ff_q_pfp_extend_newinjectiveleft. d = ff_q_pfp_extend_newinjectiveleft * S ((S (pfp_i_extend_newinjective)) * e) + (pfp_a_extend_newinjective))) -> (((exists ff_h_pfp_extend_newinjectiveright. ff_h_pfp_extend_newinjectiveright + S (pfp_a_extend_newinjective) = S ((S (pfp_j_extend_newinjective)) * e)) /\ exists ff_q_pfp_extend_newinjectiveright. d = ff_q_pfp_extend_newinjectiveright * S ((S (pfp_j_extend_newinjective)) * e) + (pfp_a_extend_newinjective))) -> pfp_i_extend_newinjective = pfp_j_extend_newinjective) /\ (forall pfp_a_extend_newsurjective. (exists pfp_gap_extend_newsurjectivevalue. pfp_gap_extend_newsurjectivevalue + S (pfp_a_extend_newsurjective) = (S l)) -> exists pfp_i_extend_newsurjective. (exists pfp_gap_extend_newsurjectiveindex. pfp_gap_extend_newsurjectiveindex + S (pfp_i_extend_newsurjective) = (S l)) /\ (((exists ff_h_pfp_extend_newsurjectiveentry. ff_h_pfp_extend_newsurjectiveentry + S (pfp_a_extend_newsurjective) = S ((S (pfp_i_extend_newsurjective)) * e)) /\ exists ff_q_pfp_extend_newsurjectiveentry. d = ff_q_pfp_extend_newsurjectiveentry * S ((S (pfp_i_extend_newsurjective)) * e) + (pfp_a_extend_newsurjective)))))))) /\ (((((exists ff_h_pfp_extensionlast. ff_h_pfp_extensionlast + S (l) = S ((S (l)) * e)) /\ exists ff_q_pfp_extensionlast. d = ff_q_pfp_extensionlast * S ((S (l)) * e) + (l))) /\ (forall pfp_i_extensionprefix pfp_a_extensionprefix. (exists pfp_gap_extensionprefixbound. pfp_gap_extensionprefixbound + S (pfp_i_extensionprefix) = (l)) -> (((exists ff_h_pfp_extensionprefixold. ff_h_pfp_extensionprefixold + S (pfp_a_extensionprefix) = S ((S (pfp_i_extensionprefix)) * c)) /\ exists ff_q_pfp_extensionprefixold. b = ff_q_pfp_extensionprefixold * S ((S (pfp_i_extensionprefix)) * c) + (pfp_a_extensionprefix))) -> (((exists ff_h_pfp_extensionprefixnew. ff_h_pfp_extensionprefixnew + S (pfp_a_extensionprefix) = S ((S (pfp_i_extensionprefix)) * e)) /\ exists ff_q_pfp_extensionprefixnew. d = ff_q_pfp_extensionprefixnew * S ((S (pfp_i_extensionprefix)) * e) + (pfp_a_extensionprefix)))))))Constructive proof overview
Generated structural guide
Append the fresh top index to any actual finite permutation, construct the new beta code, and prove all three bijection conditions.
The unchanged tactic script uses 9 declared prerequisites and contains 132 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_prefix_extend Stable theorem; checked-use authorized finite_lt_succ_eq_or_lt Stable theorem; checked-use authorized le_refl Stable theorem; checked-use authorized le_succ Stable theorem; checked-use authorized AF0006 factor_permutation_prefix_reflect finite_prefix_injective_extend_fresh Alpha theorem; checked-use authorized finite_bounded_entry_lt Stable theorem; checked-use authorized lt_irrefl_expanded Stable theorem; checked-use authorized finite_bounded_injective_surjective Stable theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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 (1)
01Fix variables and assumptionsL1–4
02Separate the logical casesL5–6
03Establish hextL7–12
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
04Separate the logical casesL13–15
05Establish hboundL16–18
Establish this local claim before using it. It is not an additional assumption.
- L16
have hbound : forall pfp_i_extend_bounded. (exists pfp_gap_extend_boundedindex. pfp_gap_extend_boundedindex + S (pfp_i_extend_bounded) = (S l)) -> exists pfp_a_extend_bounded. (((exists ff_h_pfp_extend_boundedentry. ff_h_pfp_extend_boundedentry + S (pfp_a_extend_bounded) = S ((S (pfp_i_extend_bounded)) * x1)) /\ exists ff_q_pfp_extend_boundedentry. x = ff_q_pfp_extend_boundedentry * S ((S (pfp_i_extend_bounded)) * x1) + (pfp_a_extend_bounded))) /\ (exists pfp_gap_extend_boundedvalue. pfp_gap_extend_boundedvalue + S (pfp_a_extend_bounded) = (S l)) - L17
intro i - L18
intro hi
06Establish hcaseL19–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
07Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hcase
08Construct an explicit witnessL25–25
Supply the displayed value, then prove that it has the required property.
- L25
exists l
09Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
split
10Calculate and transport equalitiesL27–28
11Use earlier factsL29–31
12Establish hvalueL32–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hp left.
- L32
have hvalue : exists a. (((exists ff_h_pfp_extend_old_value. ff_h_pfp_extend_old_value + S (a) = S ((S (i)) * c)) /\ exists ff_q_pfp_extend_old_value. b = ff_q_pfp_extend_old_value * S ((S (i)) * c) + (a))) /\ (exists pfp_gap_extend_old_bound. pfp_gap_extend_old_bound + S (a) = (l)) - L33
specialize hp_left (i) - L34
apply hp_left - L35
exact hcase_right
13Separate the logical casesL36–37
14Construct an explicit witnessL38–38
Supply the displayed value, then prove that it has the required property.
- L38
exists x2
15Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
split
16Use earlier factsL40–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
17Establish hinjectiveprefixL49–58
Establish this local claim before using it. It is not an additional assumption.
18Use earlier factsL59–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
specialize hp_right_left (a) - L60
apply hp_right_left - L61
exact hi - L62
exact hj - L63
specialize factor_permutation_prefix_reflect (b) - L64
specialize factor_permutation_prefix_reflect (c) - L65
specialize factor_permutation_prefix_reflect (x) - L66
specialize factor_permutation_prefix_reflect (x1) - L67
specialize factor_permutation_prefix_reflect (l) - L68
specialize factor_permutation_prefix_reflect (i)
19Use earlier factsL69–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
specialize factor_permutation_prefix_reflect (a) - L70
apply factor_permutation_prefix_reflect - L71
exact hext_witness_witness_right - L72
exact hi - L73
exact hfirst - L74
specialize factor_permutation_prefix_reflect (b) - L75
specialize factor_permutation_prefix_reflect (c) - L76
specialize factor_permutation_prefix_reflect (x) - L77
specialize factor_permutation_prefix_reflect (x1) - L78
specialize factor_permutation_prefix_reflect (l)
20Use earlier factsL79–84
21Establish hinjectiveL85–93
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite prefix injective extend fresh.
- L85
have hinjective : InjectivePrefix(x,x1,S l)Definitions: InjectivePrefix - L86
specialize finite_prefix_injective_extend_fresh (x) - L87
specialize finite_prefix_injective_extend_fresh (x1) - L88
specialize finite_prefix_injective_extend_fresh (l) - L89
specialize finite_prefix_injective_extend_fresh (l) - L90
apply finite_prefix_injective_extend_fresh - L91
exact hinjectiveprefix - L92
exact hext_witness_witness_left - L93
intro hcontains
22Separate the logical casesL94–95
23Use earlier factsL96–105
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L96
specialize lt_irrefl_expanded (l) - L97
apply lt_irrefl_expanded - L98
specialize finite_bounded_entry_lt (b) - L99
specialize finite_bounded_entry_lt (c) - L100
specialize finite_bounded_entry_lt (l) - L101
specialize finite_bounded_entry_lt (x2) - L102
specialize finite_bounded_entry_lt (l) - L103
apply finite_bounded_entry_lt - L104
exact hp_left - L105
exact hcontains_witness_left
24Use earlier factsL106–115
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L106
specialize factor_permutation_prefix_reflect (b) - L107
specialize factor_permutation_prefix_reflect (c) - L108
specialize factor_permutation_prefix_reflect (x) - L109
specialize factor_permutation_prefix_reflect (x1) - L110
specialize factor_permutation_prefix_reflect (l) - L111
specialize factor_permutation_prefix_reflect (x2) - L112
specialize factor_permutation_prefix_reflect (l) - L113
apply factor_permutation_prefix_reflect - L114
exact hext_witness_witness_right - L115
exact hcontains_witness_left
25Use earlier factsL116–116
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L116
exact hcontains_witness_right
26Construct an explicit witnessL117–118
27Separate the logical casesL119–120
28Use earlier factsL121–121
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L121
exact hbound
29Separate the logical casesL122–122
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L122
split
30Use earlier factsL123–129
Instantiate or apply named facts and discharge the corresponding proof obligations.
31Separate the logical casesL130–130
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L130
split
Original exact command ledger · 132 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro hp - 0005
cases hp - 0006
cases hp_right - 0007
have hext : exists d e. (((((exists ff_h_pfp_chosen_extensionlast. ff_h_pfp_chosen_extensionlast + S (l) = S ((S (l)) * e)) /\ exists ff_q_pfp_chosen_extensionlast. d = ff_q_pfp_chosen_extensionlast * S ((S (l)) * e) + (l))) /\ (forall pfp_i_chosen_extensionprefix pfp_a_chosen_extensionprefix. (exists pfp_gap_chosen_extensionprefixbound. pfp_gap_chosen_extensionprefixbound + S (pfp_i_chosen_extensionprefix) = (l)) -> (((exists ff_h_pfp_chosen_extensionprefixold. ff_h_pfp_chosen_extensionprefixold + S (pfp_a_chosen_extensionprefix) = S ((S (pfp_i_chosen_extensionprefix)) * c)) /\ exists ff_q_pfp_chosen_extensionprefixold. b = ff_q_pfp_chosen_extensionprefixold * S ((S (pfp_i_chosen_extensionprefix)) * c) + (pfp_a_chosen_extensionprefix))) -> (((exists ff_h_pfp_chosen_extensionprefixnew. ff_h_pfp_chosen_extensionprefixnew + S (pfp_a_chosen_extensionprefix) = S ((S (pfp_i_chosen_extensionprefix)) * e)) /\ exists ff_q_pfp_chosen_extensionprefixnew. d = ff_q_pfp_chosen_extensionprefixnew * S ((S (pfp_i_chosen_extensionprefix)) * e) + (pfp_a_chosen_extensionprefix)))))) - 0008
specialize beta_prefix_extend (l) - 0009
specialize beta_prefix_extend (b) - 0010
specialize beta_prefix_extend (c) - 0011
specialize beta_prefix_extend (l) - 0012
apply beta_prefix_extend - 0013
cases hext - 0014
cases hext_witness - 0015
cases hext_witness_witness - 0016
have hbound : forall pfp_i_extend_bounded. (exists pfp_gap_extend_boundedindex. pfp_gap_extend_boundedindex + S (pfp_i_extend_bounded) = (S l)) -> exists pfp_a_extend_bounded. (((exists ff_h_pfp_extend_boundedentry. ff_h_pfp_extend_boundedentry + S (pfp_a_extend_bounded) = S ((S (pfp_i_extend_bounded)) * x1)) /\ exists ff_q_pfp_extend_boundedentry. x = ff_q_pfp_extend_boundedentry * S ((S (pfp_i_extend_bounded)) * x1) + (pfp_a_extend_bounded))) /\ (exists pfp_gap_extend_boundedvalue. pfp_gap_extend_boundedvalue + S (pfp_a_extend_bounded) = (S l)) - 0017
intro i - 0018
intro hi - 0019
have hcase : i = l \/ (exists pfp_gap_extend_case. pfp_gap_extend_case + S (i) = (l)) - 0020
specialize finite_lt_succ_eq_or_lt (l) - 0021
specialize finite_lt_succ_eq_or_lt (i) - 0022
apply finite_lt_succ_eq_or_lt - 0023
exact hi - 0024
cases hcase - 0025
exists l - 0026
split - 0027
rewrite hcase_left - 0028
rewrite hcase_left - 0029
exact hext_witness_witness_left - 0030
specialize le_refl (S l) - 0031
apply le_refl - 0032
have hvalue : exists a. (((exists ff_h_pfp_extend_old_value. ff_h_pfp_extend_old_value + S (a) = S ((S (i)) * c)) /\ exists ff_q_pfp_extend_old_value. b = ff_q_pfp_extend_old_value * S ((S (i)) * c) + (a))) /\ (exists pfp_gap_extend_old_bound. pfp_gap_extend_old_bound + S (a) = (l)) - 0033
specialize hp_left (i) - 0034
apply hp_left - 0035
exact hcase_right - 0036
cases hvalue - 0037
cases hvalue_witness - 0038
exists x2 - 0039
split - 0040
specialize hext_witness_witness_right (i) - 0041
specialize hext_witness_witness_right (x2) - 0042
apply hext_witness_witness_right - 0043
exact hcase_right - 0044
exact hvalue_witness_left - 0045
specialize le_succ (S x2) - 0046
specialize le_succ (l) - 0047
apply le_succ - 0048
exact hvalue_witness_right - 0049
have hinjectiveprefix : forall pfp_i_extend_injective_prefix pfp_j_extend_injective_prefix pfp_a_extend_injective_prefix. (exists pfp_gap_extend_injective_prefixfirst. pfp_gap_extend_injective_prefixfirst + S (pfp_i_extend_injective_prefix) = (l)) -> (exists pfp_gap_extend_injective_prefixsecond. pfp_gap_extend_injective_prefixsecond + S (pfp_j_extend_injective_prefix) = (l)) -> (((exists ff_h_pfp_extend_injective_prefixleft. ff_h_pfp_extend_injective_prefixleft + S (pfp_a_extend_injective_prefix) = S ((S (pfp_i_extend_injective_prefix)) * x1)) /\ exists ff_q_pfp_extend_injective_prefixleft. x = ff_q_pfp_extend_injective_prefixleft * S ((S (pfp_i_extend_injective_prefix)) * x1) + (pfp_a_extend_injective_prefix))) -> (((exists ff_h_pfp_extend_injective_prefixright. ff_h_pfp_extend_injective_prefixright + S (pfp_a_extend_injective_prefix) = S ((S (pfp_j_extend_injective_prefix)) * x1)) /\ exists ff_q_pfp_extend_injective_prefixright. x = ff_q_pfp_extend_injective_prefixright * S ((S (pfp_j_extend_injective_prefix)) * x1) + (pfp_a_extend_injective_prefix))) -> pfp_i_extend_injective_prefix = pfp_j_extend_injective_prefix - 0050
intro i - 0051
intro j - 0052
intro a - 0053
intro hi - 0054
intro hj - 0055
intro hfirst - 0056
intro hsecond - 0057
specialize hp_right_left (i) - 0058
specialize hp_right_left (j) - 0059
specialize hp_right_left (a) - 0060
apply hp_right_left - 0061
exact hi - 0062
exact hj - 0063
specialize factor_permutation_prefix_reflect (b) - 0064
specialize factor_permutation_prefix_reflect (c) - 0065
specialize factor_permutation_prefix_reflect (x) - 0066
specialize factor_permutation_prefix_reflect (x1) - 0067
specialize factor_permutation_prefix_reflect (l) - 0068
specialize factor_permutation_prefix_reflect (i) - 0069
specialize factor_permutation_prefix_reflect (a) - 0070
apply factor_permutation_prefix_reflect - 0071
exact hext_witness_witness_right - 0072
exact hi - 0073
exact hfirst - 0074
specialize factor_permutation_prefix_reflect (b) - 0075
specialize factor_permutation_prefix_reflect (c) - 0076
specialize factor_permutation_prefix_reflect (x) - 0077
specialize factor_permutation_prefix_reflect (x1) - 0078
specialize factor_permutation_prefix_reflect (l) - 0079
specialize factor_permutation_prefix_reflect (j) - 0080
specialize factor_permutation_prefix_reflect (a) - 0081
apply factor_permutation_prefix_reflect - 0082
exact hext_witness_witness_right - 0083
exact hj - 0084
exact hsecond - 0085
have hinjective : forall pfp_i_extend_injective pfp_j_extend_injective pfp_a_extend_injective. (exists pfp_gap_extend_injectivefirst. pfp_gap_extend_injectivefirst + S (pfp_i_extend_injective) = (S l)) -> (exists pfp_gap_extend_injectivesecond. pfp_gap_extend_injectivesecond + S (pfp_j_extend_injective) = (S l)) -> (((exists ff_h_pfp_extend_injectiveleft. ff_h_pfp_extend_injectiveleft + S (pfp_a_extend_injective) = S ((S (pfp_i_extend_injective)) * x1)) /\ exists ff_q_pfp_extend_injectiveleft. x = ff_q_pfp_extend_injectiveleft * S ((S (pfp_i_extend_injective)) * x1) + (pfp_a_extend_injective))) -> (((exists ff_h_pfp_extend_injectiveright. ff_h_pfp_extend_injectiveright + S (pfp_a_extend_injective) = S ((S (pfp_j_extend_injective)) * x1)) /\ exists ff_q_pfp_extend_injectiveright. x = ff_q_pfp_extend_injectiveright * S ((S (pfp_j_extend_injective)) * x1) + (pfp_a_extend_injective))) -> pfp_i_extend_injective = pfp_j_extend_injective - 0086
specialize finite_prefix_injective_extend_fresh (x) - 0087
specialize finite_prefix_injective_extend_fresh (x1) - 0088
specialize finite_prefix_injective_extend_fresh (l) - 0089
specialize finite_prefix_injective_extend_fresh (l) - 0090
apply finite_prefix_injective_extend_fresh - 0091
exact hinjectiveprefix - 0092
exact hext_witness_witness_left - 0093
intro hcontains - 0094
cases hcontains - 0095
cases hcontains_witness - 0096
specialize lt_irrefl_expanded (l) - 0097
apply lt_irrefl_expanded - 0098
specialize finite_bounded_entry_lt (b) - 0099
specialize finite_bounded_entry_lt (c) - 0100
specialize finite_bounded_entry_lt (l) - 0101
specialize finite_bounded_entry_lt (x2) - 0102
specialize finite_bounded_entry_lt (l) - 0103
apply finite_bounded_entry_lt - 0104
exact hp_left - 0105
exact hcontains_witness_left - 0106
specialize factor_permutation_prefix_reflect (b) - 0107
specialize factor_permutation_prefix_reflect (c) - 0108
specialize factor_permutation_prefix_reflect (x) - 0109
specialize factor_permutation_prefix_reflect (x1) - 0110
specialize factor_permutation_prefix_reflect (l) - 0111
specialize factor_permutation_prefix_reflect (x2) - 0112
specialize factor_permutation_prefix_reflect (l) - 0113
apply factor_permutation_prefix_reflect - 0114
exact hext_witness_witness_right - 0115
exact hcontains_witness_left - 0116
exact hcontains_witness_right - 0117
exists x - 0118
exists x1 - 0119
split - 0120
split - 0121
exact hbound - 0122
split - 0123
exact hinjective - 0124
specialize finite_bounded_injective_surjective (S l) - 0125
specialize finite_bounded_injective_surjective (x) - 0126
specialize finite_bounded_injective_surjective (x1) - 0127
apply finite_bounded_injective_surjective - 0128
exact hbound - 0129
exact hinjective - 0130
split - 0131
exact hext_witness_witness_left - 0132
exact hext_witness_witness_right