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 d e l i p q. (exists pfp_gap_bijection_swap_index. pfp_gap_bijection_swap_index + S (i) = (l)) -> (((forall pfp_i_bijection_swap_oldbounded. (exists pfp_gap_bijection_swap_oldboundedindex. pfp_gap_bijection_swap_oldboundedindex + S (pfp_i_bijection_swap_oldbounded) = (S l)) -> exists pfp_a_bijection_swap_oldbounded. (((exists ff_h_pfp_bijection_swap_oldboundedentry. ff_h_pfp_bijection_swap_oldboundedentry + S (pfp_a_bijection_swap_oldbounded) = S ((S (pfp_i_bijection_swap_oldbounded)) * c)) /\ exists ff_q_pfp_bijection_swap_oldboundedentry. b = ff_q_pfp_bijection_swap_oldboundedentry * S ((S (pfp_i_bijection_swap_oldbounded)) * c) + (pfp_a_bijection_swap_oldbounded))) /\ (exists pfp_gap_bijection_swap_oldboundedvalue. pfp_gap_bijection_swap_oldboundedvalue + S (pfp_a_bijection_swap_oldbounded) = (S l))) /\ (((forall pfp_i_bijection_swap_oldinjective pfp_j_bijection_swap_oldinjective pfp_a_bijection_swap_oldinjective. (exists pfp_gap_bijection_swap_oldinjectivefirst. pfp_gap_bijection_swap_oldinjectivefirst + S (pfp_i_bijection_swap_oldinjective) = (S l)) -> (exists pfp_gap_bijection_swap_oldinjectivesecond. pfp_gap_bijection_swap_oldinjectivesecond + S (pfp_j_bijection_swap_oldinjective) = (S l)) -> (((exists ff_h_pfp_bijection_swap_oldinjectiveleft. ff_h_pfp_bijection_swap_oldinjectiveleft + S (pfp_a_bijection_swap_oldinjective) = S ((S (pfp_i_bijection_swap_oldinjective)) * c)) /\ exists ff_q_pfp_bijection_swap_oldinjectiveleft. b = ff_q_pfp_bijection_swap_oldinjectiveleft * S ((S (pfp_i_bijection_swap_oldinjective)) * c) + (pfp_a_bijection_swap_oldinjective))) -> (((exists ff_h_pfp_bijection_swap_oldinjectiveright. ff_h_pfp_bijection_swap_oldinjectiveright + S (pfp_a_bijection_swap_oldinjective) = S ((S (pfp_j_bijection_swap_oldinjective)) * c)) /\ exists ff_q_pfp_bijection_swap_oldinjectiveright. b = ff_q_pfp_bijection_swap_oldinjectiveright * S ((S (pfp_j_bijection_swap_oldinjective)) * c) + (pfp_a_bijection_swap_oldinjective))) -> pfp_i_bijection_swap_oldinjective = pfp_j_bijection_swap_oldinjective) /\ (forall pfp_a_bijection_swap_oldsurjective. (exists pfp_gap_bijection_swap_oldsurjectivevalue. pfp_gap_bijection_swap_oldsurjectivevalue + S (pfp_a_bijection_swap_oldsurjective) = (S l)) -> exists pfp_i_bijection_swap_oldsurjective. (exists pfp_gap_bijection_swap_oldsurjectiveindex. pfp_gap_bijection_swap_oldsurjectiveindex + S (pfp_i_bijection_swap_oldsurjective) = (S l)) /\ (((exists ff_h_pfp_bijection_swap_oldsurjectiveentry. ff_h_pfp_bijection_swap_oldsurjectiveentry + S (pfp_a_bijection_swap_oldsurjective) = S ((S (pfp_i_bijection_swap_oldsurjective)) * c)) /\ exists ff_q_pfp_bijection_swap_oldsurjectiveentry. b = ff_q_pfp_bijection_swap_oldsurjectiveentry * S ((S (pfp_i_bijection_swap_oldsurjective)) * c) + (pfp_a_bijection_swap_oldsurjective)))))))) -> (((((exists ff_h_pfp_swapoldi. ff_h_pfp_swapoldi + S (p) = S ((S (i)) * c)) /\ exists ff_q_pfp_swapoldi. b = ff_q_pfp_swapoldi * S ((S (i)) * c) + (p))) /\ (((((exists ff_h_pfp_swapoldlast. ff_h_pfp_swapoldlast + S (q) = S ((S (l)) * c)) /\ exists ff_q_pfp_swapoldlast. b = ff_q_pfp_swapoldlast * S ((S (l)) * c) + (q))) /\ (((((exists ff_h_pfp_swapnewi. ff_h_pfp_swapnewi + S (q) = S ((S (i)) * e)) /\ exists ff_q_pfp_swapnewi. d = ff_q_pfp_swapnewi * S ((S (i)) * e) + (q))) /\ (((((exists ff_h_pfp_swapnewlast. ff_h_pfp_swapnewlast + S (p) = S ((S (l)) * e)) /\ exists ff_q_pfp_swapnewlast. d = ff_q_pfp_swapnewlast * S ((S (l)) * e) + (p))) /\ (forall pfp_j_swap pfp_a_swap. (exists pfp_gap_swapbound. pfp_gap_swapbound + S (pfp_j_swap) = (S (l))) -> ~(pfp_j_swap = i) -> ~(pfp_j_swap = l) -> (((exists ff_h_pfp_swapold. ff_h_pfp_swapold + S (pfp_a_swap) = S ((S (pfp_j_swap)) * c)) /\ exists ff_q_pfp_swapold. b = ff_q_pfp_swapold * S ((S (pfp_j_swap)) * c) + (pfp_a_swap))) -> (((exists ff_h_pfp_swapnew. ff_h_pfp_swapnew + S (pfp_a_swap) = S ((S (pfp_j_swap)) * e)) /\ exists ff_q_pfp_swapnew. d = ff_q_pfp_swapnew * S ((S (pfp_j_swap)) * e) + (pfp_a_swap)))))))))))) -> (((forall pfp_i_bijection_swap_newbounded. (exists pfp_gap_bijection_swap_newboundedindex. pfp_gap_bijection_swap_newboundedindex + S (pfp_i_bijection_swap_newbounded) = (S l)) -> exists pfp_a_bijection_swap_newbounded. (((exists ff_h_pfp_bijection_swap_newboundedentry. ff_h_pfp_bijection_swap_newboundedentry + S (pfp_a_bijection_swap_newbounded) = S ((S (pfp_i_bijection_swap_newbounded)) * e)) /\ exists ff_q_pfp_bijection_swap_newboundedentry. d = ff_q_pfp_bijection_swap_newboundedentry * S ((S (pfp_i_bijection_swap_newbounded)) * e) + (pfp_a_bijection_swap_newbounded))) /\ (exists pfp_gap_bijection_swap_newboundedvalue. pfp_gap_bijection_swap_newboundedvalue + S (pfp_a_bijection_swap_newbounded) = (S l))) /\ (((forall pfp_i_bijection_swap_newinjective pfp_j_bijection_swap_newinjective pfp_a_bijection_swap_newinjective. (exists pfp_gap_bijection_swap_newinjectivefirst. pfp_gap_bijection_swap_newinjectivefirst + S (pfp_i_bijection_swap_newinjective) = (S l)) -> (exists pfp_gap_bijection_swap_newinjectivesecond. pfp_gap_bijection_swap_newinjectivesecond + S (pfp_j_bijection_swap_newinjective) = (S l)) -> (((exists ff_h_pfp_bijection_swap_newinjectiveleft. ff_h_pfp_bijection_swap_newinjectiveleft + S (pfp_a_bijection_swap_newinjective) = S ((S (pfp_i_bijection_swap_newinjective)) * e)) /\ exists ff_q_pfp_bijection_swap_newinjectiveleft. d = ff_q_pfp_bijection_swap_newinjectiveleft * S ((S (pfp_i_bijection_swap_newinjective)) * e) + (pfp_a_bijection_swap_newinjective))) -> (((exists ff_h_pfp_bijection_swap_newinjectiveright. ff_h_pfp_bijection_swap_newinjectiveright + S (pfp_a_bijection_swap_newinjective) = S ((S (pfp_j_bijection_swap_newinjective)) * e)) /\ exists ff_q_pfp_bijection_swap_newinjectiveright. d = ff_q_pfp_bijection_swap_newinjectiveright * S ((S (pfp_j_bijection_swap_newinjective)) * e) + (pfp_a_bijection_swap_newinjective))) -> pfp_i_bijection_swap_newinjective = pfp_j_bijection_swap_newinjective) /\ (forall pfp_a_bijection_swap_newsurjective. (exists pfp_gap_bijection_swap_newsurjectivevalue. pfp_gap_bijection_swap_newsurjectivevalue + S (pfp_a_bijection_swap_newsurjective) = (S l)) -> exists pfp_i_bijection_swap_newsurjective. (exists pfp_gap_bijection_swap_newsurjectiveindex. pfp_gap_bijection_swap_newsurjectiveindex + S (pfp_i_bijection_swap_newsurjective) = (S l)) /\ (((exists ff_h_pfp_bijection_swap_newsurjectiveentry. ff_h_pfp_bijection_swap_newsurjectiveentry + S (pfp_a_bijection_swap_newsurjective) = S ((S (pfp_i_bijection_swap_newsurjective)) * e)) /\ exists ff_q_pfp_bijection_swap_newsurjectiveentry. d = ff_q_pfp_bijection_swap_newsurjectiveentry * S ((S (pfp_i_bijection_swap_newsurjective)) * e) + (pfp_a_bijection_swap_newsurjective))))))))Constructive proof overview
Generated structural guide
Swapping two actual map entries preserves boundedness and injectivity and constructively recovers full finite surjectivity.
The unchanged tactic script uses 3 declared prerequisites and contains 65 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
finite_swap_last_bounded Stable theorem; checked-use authorized finite_swap_last_injective 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.
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hs
03Separate the logical casesL12–17
04Establish hbL18–27
Establish this local claim before using it. It is not an additional assumption.
- L18
have hb : forall pfp_i_swap_bounded. (exists pfp_gap_swap_boundedindex. pfp_gap_swap_boundedindex + S (pfp_i_swap_bounded) = (S l)) -> exists pfp_a_swap_bounded. (((exists ff_h_pfp_swap_boundedentry. ff_h_pfp_swap_boundedentry + S (pfp_a_swap_bounded) = S ((S (pfp_i_swap_bounded)) * e)) /\ exists ff_q_pfp_swap_boundedentry. d = ff_q_pfp_swap_boundedentry * S ((S (pfp_i_swap_bounded)) * e) + (pfp_a_swap_bounded))) /\ (exists pfp_gap_swap_boundedvalue. pfp_gap_swap_boundedvalue + S (pfp_a_swap_bounded) = (S l)) - L19
specialize finite_swap_last_bounded (b) - L20
specialize finite_swap_last_bounded (c) - L21
specialize finite_swap_last_bounded (d) - L22
specialize finite_swap_last_bounded (e) - L23
specialize finite_swap_last_bounded (l) - L24
specialize finite_swap_last_bounded (S l) - L25
specialize finite_swap_last_bounded (i) - L26
specialize finite_swap_last_bounded (p) - L27
specialize finite_swap_last_bounded (q)
05Use earlier factsL28–28
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L28
apply finite_swap_last_bounded
06Calculate and transport equalitiesL29–29
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L29
refl
07Use earlier factsL30–36
08Establish hjL37–46
Establish this local claim before using it. It is not an additional assumption.
- L37
have hj : InjectivePrefix(d,e,S l)Definitions: InjectivePrefix - L38
specialize finite_swap_last_injective (b) - L39
specialize finite_swap_last_injective (c) - L40
specialize finite_swap_last_injective (d) - L41
specialize finite_swap_last_injective (e) - L42
specialize finite_swap_last_injective (l) - L43
specialize finite_swap_last_injective (S l) - L44
specialize finite_swap_last_injective (i) - L45
specialize finite_swap_last_injective (p) - L46
specialize finite_swap_last_injective (q)
09Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
apply finite_swap_last_injective
10Calculate and transport equalitiesL48–48
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L48
refl
11Use earlier factsL49–55
12Separate the logical casesL56–56
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L56
split
13Use earlier factsL57–57
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
exact hb
14Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L58
split
15Use earlier factsL59–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 65 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro l - 0006
intro i - 0007
intro p - 0008
intro q - 0009
intro hi - 0010
intro hp - 0011
intro hs - 0012
cases hp - 0013
cases hp_right - 0014
cases hs - 0015
cases hs_right - 0016
cases hs_right_right - 0017
cases hs_right_right_right - 0018
have hb : forall pfp_i_swap_bounded. (exists pfp_gap_swap_boundedindex. pfp_gap_swap_boundedindex + S (pfp_i_swap_bounded) = (S l)) -> exists pfp_a_swap_bounded. (((exists ff_h_pfp_swap_boundedentry. ff_h_pfp_swap_boundedentry + S (pfp_a_swap_bounded) = S ((S (pfp_i_swap_bounded)) * e)) /\ exists ff_q_pfp_swap_boundedentry. d = ff_q_pfp_swap_boundedentry * S ((S (pfp_i_swap_bounded)) * e) + (pfp_a_swap_bounded))) /\ (exists pfp_gap_swap_boundedvalue. pfp_gap_swap_boundedvalue + S (pfp_a_swap_bounded) = (S l)) - 0019
specialize finite_swap_last_bounded (b) - 0020
specialize finite_swap_last_bounded (c) - 0021
specialize finite_swap_last_bounded (d) - 0022
specialize finite_swap_last_bounded (e) - 0023
specialize finite_swap_last_bounded (l) - 0024
specialize finite_swap_last_bounded (S l) - 0025
specialize finite_swap_last_bounded (i) - 0026
specialize finite_swap_last_bounded (p) - 0027
specialize finite_swap_last_bounded (q) - 0028
apply finite_swap_last_bounded - 0029
refl - 0030
exact hi - 0031
exact hp_left - 0032
exact hs_left - 0033
exact hs_right_left - 0034
exact hs_right_right_left - 0035
exact hs_right_right_right_left - 0036
exact hs_right_right_right_right - 0037
have hj : forall pfp_i_swap_injective pfp_j_swap_injective pfp_a_swap_injective. (exists pfp_gap_swap_injectivefirst. pfp_gap_swap_injectivefirst + S (pfp_i_swap_injective) = (S l)) -> (exists pfp_gap_swap_injectivesecond. pfp_gap_swap_injectivesecond + S (pfp_j_swap_injective) = (S l)) -> (((exists ff_h_pfp_swap_injectiveleft. ff_h_pfp_swap_injectiveleft + S (pfp_a_swap_injective) = S ((S (pfp_i_swap_injective)) * e)) /\ exists ff_q_pfp_swap_injectiveleft. d = ff_q_pfp_swap_injectiveleft * S ((S (pfp_i_swap_injective)) * e) + (pfp_a_swap_injective))) -> (((exists ff_h_pfp_swap_injectiveright. ff_h_pfp_swap_injectiveright + S (pfp_a_swap_injective) = S ((S (pfp_j_swap_injective)) * e)) /\ exists ff_q_pfp_swap_injectiveright. d = ff_q_pfp_swap_injectiveright * S ((S (pfp_j_swap_injective)) * e) + (pfp_a_swap_injective))) -> pfp_i_swap_injective = pfp_j_swap_injective - 0038
specialize finite_swap_last_injective (b) - 0039
specialize finite_swap_last_injective (c) - 0040
specialize finite_swap_last_injective (d) - 0041
specialize finite_swap_last_injective (e) - 0042
specialize finite_swap_last_injective (l) - 0043
specialize finite_swap_last_injective (S l) - 0044
specialize finite_swap_last_injective (i) - 0045
specialize finite_swap_last_injective (p) - 0046
specialize finite_swap_last_injective (q) - 0047
apply finite_swap_last_injective - 0048
refl - 0049
exact hi - 0050
exact hp_right_left - 0051
exact hs_left - 0052
exact hs_right_left - 0053
exact hs_right_right_left - 0054
exact hs_right_right_right_left - 0055
exact hs_right_right_right_right - 0056
split - 0057
exact hb - 0058
split - 0059
exact hj - 0060
specialize finite_bounded_injective_surjective (S l) - 0061
specialize finite_bounded_injective_surjective (d) - 0062
specialize finite_bounded_injective_surjective (e) - 0063
apply finite_bounded_injective_surjective - 0064
exact hb - 0065
exact hj