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 D E u v U V l i j p q. (exists pfp_gap_unswap_source. pfp_gap_unswap_source + S (i) = (l)) -> (exists pfp_gap_unswap_target. pfp_gap_unswap_target + S (j) = (l)) -> (((forall pfp_i_unswap_permutationbounded. (exists pfp_gap_unswap_permutationboundedindex. pfp_gap_unswap_permutationboundedindex + S (pfp_i_unswap_permutationbounded) = (S l)) -> exists pfp_a_unswap_permutationbounded. (((exists ff_h_pfp_unswap_permutationboundedentry. ff_h_pfp_unswap_permutationboundedentry + S (pfp_a_unswap_permutationbounded) = S ((S (pfp_i_unswap_permutationbounded)) * v)) /\ exists ff_q_pfp_unswap_permutationboundedentry. u = ff_q_pfp_unswap_permutationboundedentry * S ((S (pfp_i_unswap_permutationbounded)) * v) + (pfp_a_unswap_permutationbounded))) /\ (exists pfp_gap_unswap_permutationboundedvalue. pfp_gap_unswap_permutationboundedvalue + S (pfp_a_unswap_permutationbounded) = (S l))) /\ (((forall pfp_i_unswap_permutationinjective pfp_j_unswap_permutationinjective pfp_a_unswap_permutationinjective. (exists pfp_gap_unswap_permutationinjectivefirst. pfp_gap_unswap_permutationinjectivefirst + S (pfp_i_unswap_permutationinjective) = (S l)) -> (exists pfp_gap_unswap_permutationinjectivesecond. pfp_gap_unswap_permutationinjectivesecond + S (pfp_j_unswap_permutationinjective) = (S l)) -> (((exists ff_h_pfp_unswap_permutationinjectiveleft. ff_h_pfp_unswap_permutationinjectiveleft + S (pfp_a_unswap_permutationinjective) = S ((S (pfp_i_unswap_permutationinjective)) * v)) /\ exists ff_q_pfp_unswap_permutationinjectiveleft. u = ff_q_pfp_unswap_permutationinjectiveleft * S ((S (pfp_i_unswap_permutationinjective)) * v) + (pfp_a_unswap_permutationinjective))) -> (((exists ff_h_pfp_unswap_permutationinjectiveright. ff_h_pfp_unswap_permutationinjectiveright + S (pfp_a_unswap_permutationinjective) = S ((S (pfp_j_unswap_permutationinjective)) * v)) /\ exists ff_q_pfp_unswap_permutationinjectiveright. u = ff_q_pfp_unswap_permutationinjectiveright * S ((S (pfp_j_unswap_permutationinjective)) * v) + (pfp_a_unswap_permutationinjective))) -> pfp_i_unswap_permutationinjective = pfp_j_unswap_permutationinjective) /\ (forall pfp_a_unswap_permutationsurjective. (exists pfp_gap_unswap_permutationsurjectivevalue. pfp_gap_unswap_permutationsurjectivevalue + S (pfp_a_unswap_permutationsurjective) = (S l)) -> exists pfp_i_unswap_permutationsurjective. (exists pfp_gap_unswap_permutationsurjectiveindex. pfp_gap_unswap_permutationsurjectiveindex + S (pfp_i_unswap_permutationsurjective) = (S l)) /\ (((exists ff_h_pfp_unswap_permutationsurjectiveentry. ff_h_pfp_unswap_permutationsurjectiveentry + S (pfp_a_unswap_permutationsurjective) = S ((S (pfp_i_unswap_permutationsurjective)) * v)) /\ exists ff_q_pfp_unswap_permutationsurjectiveentry. u = ff_q_pfp_unswap_permutationsurjectiveentry * S ((S (pfp_i_unswap_permutationsurjective)) * v) + (pfp_a_unswap_permutationsurjective)))))))) -> (forall pfp_i_unswap_matching pfp_j_unswap_matching pfp_a_unswap_matching. (exists pfp_gap_unswap_matchingbound. pfp_gap_unswap_matchingbound + S (pfp_i_unswap_matching) = (S l)) -> (((exists ff_h_pfp_unswap_matchingmap. ff_h_pfp_unswap_matchingmap + S (pfp_j_unswap_matching) = S ((S (pfp_i_unswap_matching)) * v)) /\ exists ff_q_pfp_unswap_matchingmap. u = ff_q_pfp_unswap_matchingmap * S ((S (pfp_i_unswap_matching)) * v) + (pfp_j_unswap_matching))) -> (((exists ff_h_pfp_unswap_matchingsource. ff_h_pfp_unswap_matchingsource + S (pfp_a_unswap_matching) = S ((S (pfp_i_unswap_matching)) * c)) /\ exists ff_q_pfp_unswap_matchingsource. b = ff_q_pfp_unswap_matchingsource * S ((S (pfp_i_unswap_matching)) * c) + (pfp_a_unswap_matching))) -> (((exists ff_h_pfp_unswap_matchingtarget. ff_h_pfp_unswap_matchingtarget + S (pfp_a_unswap_matching) = S ((S (pfp_j_unswap_matching)) * E)) /\ exists ff_q_pfp_unswap_matchingtarget. D = ff_q_pfp_unswap_matchingtarget * S ((S (pfp_j_unswap_matching)) * E) + (pfp_a_unswap_matching)))) -> (((((exists ff_h_pfp_target_swapoldi. ff_h_pfp_target_swapoldi + S (p) = S ((S (j)) * e)) /\ exists ff_q_pfp_target_swapoldi. d = ff_q_pfp_target_swapoldi * S ((S (j)) * e) + (p))) /\ (((((exists ff_h_pfp_target_swapoldlast. ff_h_pfp_target_swapoldlast + S (q) = S ((S (l)) * e)) /\ exists ff_q_pfp_target_swapoldlast. d = ff_q_pfp_target_swapoldlast * S ((S (l)) * e) + (q))) /\ (((((exists ff_h_pfp_target_swapnewi. ff_h_pfp_target_swapnewi + S (q) = S ((S (j)) * E)) /\ exists ff_q_pfp_target_swapnewi. D = ff_q_pfp_target_swapnewi * S ((S (j)) * E) + (q))) /\ (((((exists ff_h_pfp_target_swapnewlast. ff_h_pfp_target_swapnewlast + S (p) = S ((S (l)) * E)) /\ exists ff_q_pfp_target_swapnewlast. D = ff_q_pfp_target_swapnewlast * S ((S (l)) * E) + (p))) /\ (forall pfp_j_target_swap pfp_a_target_swap. (exists pfp_gap_target_swapbound. pfp_gap_target_swapbound + S (pfp_j_target_swap) = (S (l))) -> ~(pfp_j_target_swap = j) -> ~(pfp_j_target_swap = l) -> (((exists ff_h_pfp_target_swapold. ff_h_pfp_target_swapold + S (pfp_a_target_swap) = S ((S (pfp_j_target_swap)) * e)) /\ exists ff_q_pfp_target_swapold. d = ff_q_pfp_target_swapold * S ((S (pfp_j_target_swap)) * e) + (pfp_a_target_swap))) -> (((exists ff_h_pfp_target_swapnew. ff_h_pfp_target_swapnew + S (pfp_a_target_swap) = S ((S (pfp_j_target_swap)) * E)) /\ exists ff_q_pfp_target_swapnew. D = ff_q_pfp_target_swapnew * S ((S (pfp_j_target_swap)) * E) + (pfp_a_target_swap)))))))))))) -> (((((exists ff_h_pfp_map_swapoldi. ff_h_pfp_map_swapoldi + S (j) = S ((S (i)) * v)) /\ exists ff_q_pfp_map_swapoldi. u = ff_q_pfp_map_swapoldi * S ((S (i)) * v) + (j))) /\ (((((exists ff_h_pfp_map_swapoldlast. ff_h_pfp_map_swapoldlast + S (l) = S ((S (l)) * v)) /\ exists ff_q_pfp_map_swapoldlast. u = ff_q_pfp_map_swapoldlast * S ((S (l)) * v) + (l))) /\ (((((exists ff_h_pfp_map_swapnewi. ff_h_pfp_map_swapnewi + S (l) = S ((S (i)) * V)) /\ exists ff_q_pfp_map_swapnewi. U = ff_q_pfp_map_swapnewi * S ((S (i)) * V) + (l))) /\ (((((exists ff_h_pfp_map_swapnewlast. ff_h_pfp_map_swapnewlast + S (j) = S ((S (l)) * V)) /\ exists ff_q_pfp_map_swapnewlast. U = ff_q_pfp_map_swapnewlast * S ((S (l)) * V) + (j))) /\ (forall pfp_j_map_swap pfp_a_map_swap. (exists pfp_gap_map_swapbound. pfp_gap_map_swapbound + S (pfp_j_map_swap) = (S (l))) -> ~(pfp_j_map_swap = i) -> ~(pfp_j_map_swap = l) -> (((exists ff_h_pfp_map_swapold. ff_h_pfp_map_swapold + S (pfp_a_map_swap) = S ((S (pfp_j_map_swap)) * v)) /\ exists ff_q_pfp_map_swapold. u = ff_q_pfp_map_swapold * S ((S (pfp_j_map_swap)) * v) + (pfp_a_map_swap))) -> (((exists ff_h_pfp_map_swapnew. ff_h_pfp_map_swapnew + S (pfp_a_map_swap) = S ((S (pfp_j_map_swap)) * V)) /\ exists ff_q_pfp_map_swapnew. U = ff_q_pfp_map_swapnew * S ((S (pfp_j_map_swap)) * V) + (pfp_a_map_swap)))))))))))) -> (forall pfp_i_unswap_result pfp_j_unswap_result pfp_a_unswap_result. (exists pfp_gap_unswap_resultbound. pfp_gap_unswap_resultbound + S (pfp_i_unswap_result) = (S l)) -> (((exists ff_h_pfp_unswap_resultmap. ff_h_pfp_unswap_resultmap + S (pfp_j_unswap_result) = S ((S (pfp_i_unswap_result)) * V)) /\ exists ff_q_pfp_unswap_resultmap. U = ff_q_pfp_unswap_resultmap * S ((S (pfp_i_unswap_result)) * V) + (pfp_j_unswap_result))) -> (((exists ff_h_pfp_unswap_resultsource. ff_h_pfp_unswap_resultsource + S (pfp_a_unswap_result) = S ((S (pfp_i_unswap_result)) * c)) /\ exists ff_q_pfp_unswap_resultsource. b = ff_q_pfp_unswap_resultsource * S ((S (pfp_i_unswap_result)) * c) + (pfp_a_unswap_result))) -> (((exists ff_h_pfp_unswap_resulttarget. ff_h_pfp_unswap_resulttarget + S (pfp_a_unswap_result) = S ((S (pfp_j_unswap_result)) * e)) /\ exists ff_q_pfp_unswap_resulttarget. d = ff_q_pfp_unswap_resulttarget * S ((S (pfp_j_unswap_result)) * e) + (pfp_a_unswap_result))))Constructive proof overview
Generated structural guide
Undo a target-list swap by swapping the two corresponding actual source-map entries. Entry alignment follows at the two moved positions and everywhere else by map injectivity.
The unchanged tactic script uses 6 declared prerequisites and contains 206 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
eq_decidable Stable theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized AF0012 factor_permutation_swap_reflect_unchanged finite_bounded_entry_lt Stable theorem; checked-use authorized le_succ Stable theorem; checked-use authorized le_refl 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–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–21
Work with arbitrary variables or the premises of the current implication.
- L21
intro ht
04Separate the logical casesL22–23
05Establish hscopyL24–25
06Separate the logical casesL26–29
07Establish htcopyL30–31
08Separate the logical casesL32–35
09Fix variables and assumptionsL36–41
10Establish hcaseL42–45
11Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
cases hcase
12Establish hzL47–56
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
13Use earlier factsL57–57
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
exact htcopy_right_right_left
14Establish hvalueL58–67
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hm.
- L58
have hvalue : ((exists ff_h_pfp_unswap_selected_target. ff_h_pfp_unswap_selected_target + S (a) = S ((S (j)) * E)) /\ exists ff_q_pfp_unswap_selected_target. D = ff_q_pfp_unswap_selected_target * S ((S (j)) * E) + (a)) - L59
specialize hm (i) - L60
specialize hm (j) - L61
specialize hm (a) - L62
apply hm - L63
specialize le_succ (S i) - L64
specialize le_succ (l) - L65
apply le_succ - L66
exact hi - L67
exact htcopy_left
15Calculate and transport equalitiesL68–69
16Use earlier factsL70–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
exact hsource
17Establish haL71–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
18Calculate and transport equalitiesL81–83
19Use earlier factsL84–84
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L84
exact hscopy_right_left
20Establish hlastL85–88
21Separate the logical casesL89–89
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L89
cases hlast
22Establish hzL90–99
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
23Use earlier factsL100–100
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L100
exact htcopy_right_right_right_left
24Establish hvalueL101–110
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hm.
- L101
have hvalue : ((exists ff_h_pfp_unswap_last_target. ff_h_pfp_unswap_last_target + S (a) = S ((S (l)) * E)) /\ exists ff_q_pfp_unswap_last_target. D = ff_q_pfp_unswap_last_target * S ((S (l)) * E) + (a)) - L102
specialize hm (l) - L103
specialize hm (l) - L104
specialize hm (a) - L105
apply hm - L106
specialize le_refl (S l) - L107
apply le_refl - L108
exact htcopy_right_left - L109
rewrite hlast_left at hsource - L110
rewrite hlast_left at hsource
25Use earlier factsL111–111
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L111
exact hsource
26Establish haL112–121
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
27Calculate and transport equalitiesL122–124
28Use earlier factsL125–125
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L125
exact hscopy_left
29Establish holdL126–135
Establish this local claim before using it. It is not an additional assumption.
- L126
have hold : ((exists ff_h_pfp_unswap_unchanged_map. ff_h_pfp_unswap_unchanged_map + S (z) = S ((S (k)) * v)) /\ exists ff_q_pfp_unswap_unchanged_map. u = ff_q_pfp_unswap_unchanged_map * S ((S (k)) * v) + (z)) - L127
specialize factor_permutation_swap_reflect_unchanged (u) - L128
specialize factor_permutation_swap_reflect_unchanged (v) - L129
specialize factor_permutation_swap_reflect_unchanged (U) - L130
specialize factor_permutation_swap_reflect_unchanged (V) - L131
specialize factor_permutation_swap_reflect_unchanged (l) - L132
specialize factor_permutation_swap_reflect_unchanged (i) - L133
specialize factor_permutation_swap_reflect_unchanged (j) - L134
specialize factor_permutation_swap_reflect_unchanged (l) - L135
specialize factor_permutation_swap_reflect_unchanged (k)
30Use earlier factsL136–142
31Establish hvalueL143–150
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hm.
- L143
have hvalue : ((exists ff_h_pfp_unswap_unchanged_target. ff_h_pfp_unswap_unchanged_target + S (a) = S ((S (z)) * E)) /\ exists ff_q_pfp_unswap_unchanged_target. D = ff_q_pfp_unswap_unchanged_target * S ((S (z)) * E) + (a)) - L144
specialize hm (k) - L145
specialize hm (z) - L146
specialize hm (a) - L147
apply hm - L148
exact hk - L149
exact hold - L150
exact hsource
32Establish hzboundL151–160
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite bounded entry lt.
- L151
have hzbound : exists pfp_gap_unswap_image_bound. pfp_gap_unswap_image_bound + S (z) = (S l) - L152
specialize finite_bounded_entry_lt (u) - L153
specialize finite_bounded_entry_lt (v) - L154
specialize finite_bounded_entry_lt (S l) - L155
specialize finite_bounded_entry_lt (k) - L156
specialize finite_bounded_entry_lt (z) - L157
apply finite_bounded_entry_lt - L158
exact hp_left - L159
exact hk - L160
exact hold
33Establish hzjL161–170
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hcase right.
34Use earlier factsL171–172
35Calculate and transport equalitiesL173–174
36Use earlier factsL175–176
37Establish hzlL177–186
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hlast right.
38Calculate and transport equalitiesL187–188
39Use earlier factsL189–198
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L189
exact hold - L190
exact htcopy_right_left - L191
specialize factor_permutation_swap_reflect_unchanged (d) - L192
specialize factor_permutation_swap_reflect_unchanged (e) - L193
specialize factor_permutation_swap_reflect_unchanged (D) - L194
specialize factor_permutation_swap_reflect_unchanged (E) - L195
specialize factor_permutation_swap_reflect_unchanged (l) - L196
specialize factor_permutation_swap_reflect_unchanged (j) - L197
specialize factor_permutation_swap_reflect_unchanged (p) - L198
specialize factor_permutation_swap_reflect_unchanged (q)
40Use earlier factsL199–206
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 206 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro D - 0006
intro E - 0007
intro u - 0008
intro v - 0009
intro U - 0010
intro V - 0011
intro l - 0012
intro i - 0013
intro j - 0014
intro p - 0015
intro q - 0016
intro hi - 0017
intro hj - 0018
intro hp - 0019
intro hm - 0020
intro hs - 0021
intro ht - 0022
cases hp - 0023
cases hp_right - 0024
have hscopy : ((((exists ff_h_pfp_target_swapoldi. ff_h_pfp_target_swapoldi + S (p) = S ((S (j)) * e)) /\ exists ff_q_pfp_target_swapoldi. d = ff_q_pfp_target_swapoldi * S ((S (j)) * e) + (p))) /\ (((((exists ff_h_pfp_target_swapoldlast. ff_h_pfp_target_swapoldlast + S (q) = S ((S (l)) * e)) /\ exists ff_q_pfp_target_swapoldlast. d = ff_q_pfp_target_swapoldlast * S ((S (l)) * e) + (q))) /\ (((((exists ff_h_pfp_target_swapnewi. ff_h_pfp_target_swapnewi + S (q) = S ((S (j)) * E)) /\ exists ff_q_pfp_target_swapnewi. D = ff_q_pfp_target_swapnewi * S ((S (j)) * E) + (q))) /\ (((((exists ff_h_pfp_target_swapnewlast. ff_h_pfp_target_swapnewlast + S (p) = S ((S (l)) * E)) /\ exists ff_q_pfp_target_swapnewlast. D = ff_q_pfp_target_swapnewlast * S ((S (l)) * E) + (p))) /\ (forall pfp_j_target_swap pfp_a_target_swap. (exists pfp_gap_target_swapbound. pfp_gap_target_swapbound + S (pfp_j_target_swap) = (S (l))) -> ~(pfp_j_target_swap = j) -> ~(pfp_j_target_swap = l) -> (((exists ff_h_pfp_target_swapold. ff_h_pfp_target_swapold + S (pfp_a_target_swap) = S ((S (pfp_j_target_swap)) * e)) /\ exists ff_q_pfp_target_swapold. d = ff_q_pfp_target_swapold * S ((S (pfp_j_target_swap)) * e) + (pfp_a_target_swap))) -> (((exists ff_h_pfp_target_swapnew. ff_h_pfp_target_swapnew + S (pfp_a_target_swap) = S ((S (pfp_j_target_swap)) * E)) /\ exists ff_q_pfp_target_swapnew. D = ff_q_pfp_target_swapnew * S ((S (pfp_j_target_swap)) * E) + (pfp_a_target_swap))))))))))) - 0025
exact hs - 0026
cases hscopy - 0027
cases hscopy_right - 0028
cases hscopy_right_right - 0029
cases hscopy_right_right_right - 0030
have htcopy : ((((exists ff_h_pfp_map_swapoldi. ff_h_pfp_map_swapoldi + S (j) = S ((S (i)) * v)) /\ exists ff_q_pfp_map_swapoldi. u = ff_q_pfp_map_swapoldi * S ((S (i)) * v) + (j))) /\ (((((exists ff_h_pfp_map_swapoldlast. ff_h_pfp_map_swapoldlast + S (l) = S ((S (l)) * v)) /\ exists ff_q_pfp_map_swapoldlast. u = ff_q_pfp_map_swapoldlast * S ((S (l)) * v) + (l))) /\ (((((exists ff_h_pfp_map_swapnewi. ff_h_pfp_map_swapnewi + S (l) = S ((S (i)) * V)) /\ exists ff_q_pfp_map_swapnewi. U = ff_q_pfp_map_swapnewi * S ((S (i)) * V) + (l))) /\ (((((exists ff_h_pfp_map_swapnewlast. ff_h_pfp_map_swapnewlast + S (j) = S ((S (l)) * V)) /\ exists ff_q_pfp_map_swapnewlast. U = ff_q_pfp_map_swapnewlast * S ((S (l)) * V) + (j))) /\ (forall pfp_j_map_swap pfp_a_map_swap. (exists pfp_gap_map_swapbound. pfp_gap_map_swapbound + S (pfp_j_map_swap) = (S (l))) -> ~(pfp_j_map_swap = i) -> ~(pfp_j_map_swap = l) -> (((exists ff_h_pfp_map_swapold. ff_h_pfp_map_swapold + S (pfp_a_map_swap) = S ((S (pfp_j_map_swap)) * v)) /\ exists ff_q_pfp_map_swapold. u = ff_q_pfp_map_swapold * S ((S (pfp_j_map_swap)) * v) + (pfp_a_map_swap))) -> (((exists ff_h_pfp_map_swapnew. ff_h_pfp_map_swapnew + S (pfp_a_map_swap) = S ((S (pfp_j_map_swap)) * V)) /\ exists ff_q_pfp_map_swapnew. U = ff_q_pfp_map_swapnew * S ((S (pfp_j_map_swap)) * V) + (pfp_a_map_swap))))))))))) - 0031
exact ht - 0032
cases htcopy - 0033
cases htcopy_right - 0034
cases htcopy_right_right - 0035
cases htcopy_right_right_right - 0036
intro k - 0037
intro z - 0038
intro a - 0039
intro hk - 0040
intro hmap - 0041
intro hsource - 0042
have hcase : k = i \/ ~(k = i) - 0043
specialize eq_decidable (k) - 0044
specialize eq_decidable (i) - 0045
apply eq_decidable - 0046
cases hcase - 0047
have hz : z = l - 0048
specialize beta_at_unique (U) - 0049
specialize beta_at_unique (V) - 0050
specialize beta_at_unique (i) - 0051
specialize beta_at_unique (z) - 0052
specialize beta_at_unique (l) - 0053
apply beta_at_unique - 0054
rewrite hcase_left at hmap - 0055
rewrite hcase_left at hmap - 0056
exact hmap - 0057
exact htcopy_right_right_left - 0058
have hvalue : ((exists ff_h_pfp_unswap_selected_target. ff_h_pfp_unswap_selected_target + S (a) = S ((S (j)) * E)) /\ exists ff_q_pfp_unswap_selected_target. D = ff_q_pfp_unswap_selected_target * S ((S (j)) * E) + (a)) - 0059
specialize hm (i) - 0060
specialize hm (j) - 0061
specialize hm (a) - 0062
apply hm - 0063
specialize le_succ (S i) - 0064
specialize le_succ (l) - 0065
apply le_succ - 0066
exact hi - 0067
exact htcopy_left - 0068
rewrite hcase_left at hsource - 0069
rewrite hcase_left at hsource - 0070
exact hsource - 0071
have ha : a = q - 0072
specialize beta_at_unique (D) - 0073
specialize beta_at_unique (E) - 0074
specialize beta_at_unique (j) - 0075
specialize beta_at_unique (a) - 0076
specialize beta_at_unique (q) - 0077
apply beta_at_unique - 0078
exact hvalue - 0079
exact hscopy_right_right_left - 0080
rewrite hz - 0081
rewrite hz - 0082
rewrite ha - 0083
rewrite ha - 0084
exact hscopy_right_left - 0085
have hlast : k = l \/ ~(k = l) - 0086
specialize eq_decidable (k) - 0087
specialize eq_decidable (l) - 0088
apply eq_decidable - 0089
cases hlast - 0090
have hz : z = j - 0091
specialize beta_at_unique (U) - 0092
specialize beta_at_unique (V) - 0093
specialize beta_at_unique (l) - 0094
specialize beta_at_unique (z) - 0095
specialize beta_at_unique (j) - 0096
apply beta_at_unique - 0097
rewrite hlast_left at hmap - 0098
rewrite hlast_left at hmap - 0099
exact hmap - 0100
exact htcopy_right_right_right_left - 0101
have hvalue : ((exists ff_h_pfp_unswap_last_target. ff_h_pfp_unswap_last_target + S (a) = S ((S (l)) * E)) /\ exists ff_q_pfp_unswap_last_target. D = ff_q_pfp_unswap_last_target * S ((S (l)) * E) + (a)) - 0102
specialize hm (l) - 0103
specialize hm (l) - 0104
specialize hm (a) - 0105
apply hm - 0106
specialize le_refl (S l) - 0107
apply le_refl - 0108
exact htcopy_right_left - 0109
rewrite hlast_left at hsource - 0110
rewrite hlast_left at hsource - 0111
exact hsource - 0112
have ha : a = p - 0113
specialize beta_at_unique (D) - 0114
specialize beta_at_unique (E) - 0115
specialize beta_at_unique (l) - 0116
specialize beta_at_unique (a) - 0117
specialize beta_at_unique (p) - 0118
apply beta_at_unique - 0119
exact hvalue - 0120
exact hscopy_right_right_right_left - 0121
rewrite hz - 0122
rewrite hz - 0123
rewrite ha - 0124
rewrite ha - 0125
exact hscopy_left - 0126
have hold : ((exists ff_h_pfp_unswap_unchanged_map. ff_h_pfp_unswap_unchanged_map + S (z) = S ((S (k)) * v)) /\ exists ff_q_pfp_unswap_unchanged_map. u = ff_q_pfp_unswap_unchanged_map * S ((S (k)) * v) + (z)) - 0127
specialize factor_permutation_swap_reflect_unchanged (u) - 0128
specialize factor_permutation_swap_reflect_unchanged (v) - 0129
specialize factor_permutation_swap_reflect_unchanged (U) - 0130
specialize factor_permutation_swap_reflect_unchanged (V) - 0131
specialize factor_permutation_swap_reflect_unchanged (l) - 0132
specialize factor_permutation_swap_reflect_unchanged (i) - 0133
specialize factor_permutation_swap_reflect_unchanged (j) - 0134
specialize factor_permutation_swap_reflect_unchanged (l) - 0135
specialize factor_permutation_swap_reflect_unchanged (k) - 0136
specialize factor_permutation_swap_reflect_unchanged (z) - 0137
apply factor_permutation_swap_reflect_unchanged - 0138
exact ht - 0139
exact hk - 0140
exact hcase_right - 0141
exact hlast_right - 0142
exact hmap - 0143
have hvalue : ((exists ff_h_pfp_unswap_unchanged_target. ff_h_pfp_unswap_unchanged_target + S (a) = S ((S (z)) * E)) /\ exists ff_q_pfp_unswap_unchanged_target. D = ff_q_pfp_unswap_unchanged_target * S ((S (z)) * E) + (a)) - 0144
specialize hm (k) - 0145
specialize hm (z) - 0146
specialize hm (a) - 0147
apply hm - 0148
exact hk - 0149
exact hold - 0150
exact hsource - 0151
have hzbound : exists pfp_gap_unswap_image_bound. pfp_gap_unswap_image_bound + S (z) = (S l) - 0152
specialize finite_bounded_entry_lt (u) - 0153
specialize finite_bounded_entry_lt (v) - 0154
specialize finite_bounded_entry_lt (S l) - 0155
specialize finite_bounded_entry_lt (k) - 0156
specialize finite_bounded_entry_lt (z) - 0157
apply finite_bounded_entry_lt - 0158
exact hp_left - 0159
exact hk - 0160
exact hold - 0161
have hzj : ~(z = j) - 0162
intro heq - 0163
apply hcase_right - 0164
specialize hp_right_left (k) - 0165
specialize hp_right_left (i) - 0166
specialize hp_right_left (j) - 0167
apply hp_right_left - 0168
exact hk - 0169
specialize le_succ (S i) - 0170
specialize le_succ (l) - 0171
apply le_succ - 0172
exact hi - 0173
rewrite heq at hold - 0174
rewrite heq at hold - 0175
exact hold - 0176
exact htcopy_left - 0177
have hzl : ~(z = l) - 0178
intro heq - 0179
apply hlast_right - 0180
specialize hp_right_left (k) - 0181
specialize hp_right_left (l) - 0182
specialize hp_right_left (l) - 0183
apply hp_right_left - 0184
exact hk - 0185
specialize le_refl (S l) - 0186
apply le_refl - 0187
rewrite heq at hold - 0188
rewrite heq at hold - 0189
exact hold - 0190
exact htcopy_right_left - 0191
specialize factor_permutation_swap_reflect_unchanged (d) - 0192
specialize factor_permutation_swap_reflect_unchanged (e) - 0193
specialize factor_permutation_swap_reflect_unchanged (D) - 0194
specialize factor_permutation_swap_reflect_unchanged (E) - 0195
specialize factor_permutation_swap_reflect_unchanged (l) - 0196
specialize factor_permutation_swap_reflect_unchanged (j) - 0197
specialize factor_permutation_swap_reflect_unchanged (p) - 0198
specialize factor_permutation_swap_reflect_unchanged (q) - 0199
specialize factor_permutation_swap_reflect_unchanged (z) - 0200
specialize factor_permutation_swap_reflect_unchanged (a) - 0201
apply factor_permutation_swap_reflect_unchanged - 0202
exact hs - 0203
exact hzbound - 0204
exact hzj - 0205
exact hzl - 0206
exact hvalue