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 u v l p. (((((forall pfp_i_matched_oldpermutationbounded. (exists pfp_gap_matched_oldpermutationboundedindex. pfp_gap_matched_oldpermutationboundedindex + S (pfp_i_matched_oldpermutationbounded) = (l)) -> exists pfp_a_matched_oldpermutationbounded. (((exists ff_h_pfp_matched_oldpermutationboundedentry. ff_h_pfp_matched_oldpermutationboundedentry + S (pfp_a_matched_oldpermutationbounded) = S ((S (pfp_i_matched_oldpermutationbounded)) * v)) /\ exists ff_q_pfp_matched_oldpermutationboundedentry. u = ff_q_pfp_matched_oldpermutationboundedentry * S ((S (pfp_i_matched_oldpermutationbounded)) * v) + (pfp_a_matched_oldpermutationbounded))) /\ (exists pfp_gap_matched_oldpermutationboundedvalue. pfp_gap_matched_oldpermutationboundedvalue + S (pfp_a_matched_oldpermutationbounded) = (l))) /\ (((forall pfp_i_matched_oldpermutationinjective pfp_j_matched_oldpermutationinjective pfp_a_matched_oldpermutationinjective. (exists pfp_gap_matched_oldpermutationinjectivefirst. pfp_gap_matched_oldpermutationinjectivefirst + S (pfp_i_matched_oldpermutationinjective) = (l)) -> (exists pfp_gap_matched_oldpermutationinjectivesecond. pfp_gap_matched_oldpermutationinjectivesecond + S (pfp_j_matched_oldpermutationinjective) = (l)) -> (((exists ff_h_pfp_matched_oldpermutationinjectiveleft. ff_h_pfp_matched_oldpermutationinjectiveleft + S (pfp_a_matched_oldpermutationinjective) = S ((S (pfp_i_matched_oldpermutationinjective)) * v)) /\ exists ff_q_pfp_matched_oldpermutationinjectiveleft. u = ff_q_pfp_matched_oldpermutationinjectiveleft * S ((S (pfp_i_matched_oldpermutationinjective)) * v) + (pfp_a_matched_oldpermutationinjective))) -> (((exists ff_h_pfp_matched_oldpermutationinjectiveright. ff_h_pfp_matched_oldpermutationinjectiveright + S (pfp_a_matched_oldpermutationinjective) = S ((S (pfp_j_matched_oldpermutationinjective)) * v)) /\ exists ff_q_pfp_matched_oldpermutationinjectiveright. u = ff_q_pfp_matched_oldpermutationinjectiveright * S ((S (pfp_j_matched_oldpermutationinjective)) * v) + (pfp_a_matched_oldpermutationinjective))) -> pfp_i_matched_oldpermutationinjective = pfp_j_matched_oldpermutationinjective) /\ (forall pfp_a_matched_oldpermutationsurjective. (exists pfp_gap_matched_oldpermutationsurjectivevalue. pfp_gap_matched_oldpermutationsurjectivevalue + S (pfp_a_matched_oldpermutationsurjective) = (l)) -> exists pfp_i_matched_oldpermutationsurjective. (exists pfp_gap_matched_oldpermutationsurjectiveindex. pfp_gap_matched_oldpermutationsurjectiveindex + S (pfp_i_matched_oldpermutationsurjective) = (l)) /\ (((exists ff_h_pfp_matched_oldpermutationsurjectiveentry. ff_h_pfp_matched_oldpermutationsurjectiveentry + S (pfp_a_matched_oldpermutationsurjective) = S ((S (pfp_i_matched_oldpermutationsurjective)) * v)) /\ exists ff_q_pfp_matched_oldpermutationsurjectiveentry. u = ff_q_pfp_matched_oldpermutationsurjectiveentry * S ((S (pfp_i_matched_oldpermutationsurjective)) * v) + (pfp_a_matched_oldpermutationsurjective)))))))) /\ (forall pfp_i_matched_oldmatching pfp_j_matched_oldmatching pfp_a_matched_oldmatching. (exists pfp_gap_matched_oldmatchingbound. pfp_gap_matched_oldmatchingbound + S (pfp_i_matched_oldmatching) = (l)) -> (((exists ff_h_pfp_matched_oldmatchingmap. ff_h_pfp_matched_oldmatchingmap + S (pfp_j_matched_oldmatching) = S ((S (pfp_i_matched_oldmatching)) * v)) /\ exists ff_q_pfp_matched_oldmatchingmap. u = ff_q_pfp_matched_oldmatchingmap * S ((S (pfp_i_matched_oldmatching)) * v) + (pfp_j_matched_oldmatching))) -> (((exists ff_h_pfp_matched_oldmatchingsource. ff_h_pfp_matched_oldmatchingsource + S (pfp_a_matched_oldmatching) = S ((S (pfp_i_matched_oldmatching)) * c)) /\ exists ff_q_pfp_matched_oldmatchingsource. b = ff_q_pfp_matched_oldmatchingsource * S ((S (pfp_i_matched_oldmatching)) * c) + (pfp_a_matched_oldmatching))) -> (((exists ff_h_pfp_matched_oldmatchingtarget. ff_h_pfp_matched_oldmatchingtarget + S (pfp_a_matched_oldmatching) = S ((S (pfp_j_matched_oldmatching)) * e)) /\ exists ff_q_pfp_matched_oldmatchingtarget. d = ff_q_pfp_matched_oldmatchingtarget * S ((S (pfp_j_matched_oldmatching)) * e) + (pfp_a_matched_oldmatching)))))) -> (((exists ff_h_pfp_matched_left. ff_h_pfp_matched_left + S (p) = S ((S (l)) * c)) /\ exists ff_q_pfp_matched_left. b = ff_q_pfp_matched_left * S ((S (l)) * c) + (p))) -> (((exists ff_h_pfp_matched_right. ff_h_pfp_matched_right + S (p) = S ((S (l)) * e)) /\ exists ff_q_pfp_matched_right. d = ff_q_pfp_matched_right * S ((S (l)) * e) + (p))) -> exists U V. ((((((forall pfp_i_matched_newpermutationbounded. (exists pfp_gap_matched_newpermutationboundedindex. pfp_gap_matched_newpermutationboundedindex + S (pfp_i_matched_newpermutationbounded) = (S l)) -> exists pfp_a_matched_newpermutationbounded. (((exists ff_h_pfp_matched_newpermutationboundedentry. ff_h_pfp_matched_newpermutationboundedentry + S (pfp_a_matched_newpermutationbounded) = S ((S (pfp_i_matched_newpermutationbounded)) * V)) /\ exists ff_q_pfp_matched_newpermutationboundedentry. U = ff_q_pfp_matched_newpermutationboundedentry * S ((S (pfp_i_matched_newpermutationbounded)) * V) + (pfp_a_matched_newpermutationbounded))) /\ (exists pfp_gap_matched_newpermutationboundedvalue. pfp_gap_matched_newpermutationboundedvalue + S (pfp_a_matched_newpermutationbounded) = (S l))) /\ (((forall pfp_i_matched_newpermutationinjective pfp_j_matched_newpermutationinjective pfp_a_matched_newpermutationinjective. (exists pfp_gap_matched_newpermutationinjectivefirst. pfp_gap_matched_newpermutationinjectivefirst + S (pfp_i_matched_newpermutationinjective) = (S l)) -> (exists pfp_gap_matched_newpermutationinjectivesecond. pfp_gap_matched_newpermutationinjectivesecond + S (pfp_j_matched_newpermutationinjective) = (S l)) -> (((exists ff_h_pfp_matched_newpermutationinjectiveleft. ff_h_pfp_matched_newpermutationinjectiveleft + S (pfp_a_matched_newpermutationinjective) = S ((S (pfp_i_matched_newpermutationinjective)) * V)) /\ exists ff_q_pfp_matched_newpermutationinjectiveleft. U = ff_q_pfp_matched_newpermutationinjectiveleft * S ((S (pfp_i_matched_newpermutationinjective)) * V) + (pfp_a_matched_newpermutationinjective))) -> (((exists ff_h_pfp_matched_newpermutationinjectiveright. ff_h_pfp_matched_newpermutationinjectiveright + S (pfp_a_matched_newpermutationinjective) = S ((S (pfp_j_matched_newpermutationinjective)) * V)) /\ exists ff_q_pfp_matched_newpermutationinjectiveright. U = ff_q_pfp_matched_newpermutationinjectiveright * S ((S (pfp_j_matched_newpermutationinjective)) * V) + (pfp_a_matched_newpermutationinjective))) -> pfp_i_matched_newpermutationinjective = pfp_j_matched_newpermutationinjective) /\ (forall pfp_a_matched_newpermutationsurjective. (exists pfp_gap_matched_newpermutationsurjectivevalue. pfp_gap_matched_newpermutationsurjectivevalue + S (pfp_a_matched_newpermutationsurjective) = (S l)) -> exists pfp_i_matched_newpermutationsurjective. (exists pfp_gap_matched_newpermutationsurjectiveindex. pfp_gap_matched_newpermutationsurjectiveindex + S (pfp_i_matched_newpermutationsurjective) = (S l)) /\ (((exists ff_h_pfp_matched_newpermutationsurjectiveentry. ff_h_pfp_matched_newpermutationsurjectiveentry + S (pfp_a_matched_newpermutationsurjective) = S ((S (pfp_i_matched_newpermutationsurjective)) * V)) /\ exists ff_q_pfp_matched_newpermutationsurjectiveentry. U = ff_q_pfp_matched_newpermutationsurjectiveentry * S ((S (pfp_i_matched_newpermutationsurjective)) * V) + (pfp_a_matched_newpermutationsurjective)))))))) /\ (forall pfp_i_matched_newmatching pfp_j_matched_newmatching pfp_a_matched_newmatching. (exists pfp_gap_matched_newmatchingbound. pfp_gap_matched_newmatchingbound + S (pfp_i_matched_newmatching) = (S l)) -> (((exists ff_h_pfp_matched_newmatchingmap. ff_h_pfp_matched_newmatchingmap + S (pfp_j_matched_newmatching) = S ((S (pfp_i_matched_newmatching)) * V)) /\ exists ff_q_pfp_matched_newmatchingmap. U = ff_q_pfp_matched_newmatchingmap * S ((S (pfp_i_matched_newmatching)) * V) + (pfp_j_matched_newmatching))) -> (((exists ff_h_pfp_matched_newmatchingsource. ff_h_pfp_matched_newmatchingsource + S (pfp_a_matched_newmatching) = S ((S (pfp_i_matched_newmatching)) * c)) /\ exists ff_q_pfp_matched_newmatchingsource. b = ff_q_pfp_matched_newmatchingsource * S ((S (pfp_i_matched_newmatching)) * c) + (pfp_a_matched_newmatching))) -> (((exists ff_h_pfp_matched_newmatchingtarget. ff_h_pfp_matched_newmatchingtarget + S (pfp_a_matched_newmatching) = S ((S (pfp_j_matched_newmatching)) * e)) /\ exists ff_q_pfp_matched_newmatchingtarget. d = ff_q_pfp_matched_newmatchingtarget * S ((S (pfp_j_matched_newmatching)) * e) + (pfp_a_matched_newmatching)))))) /\ (((((exists ff_h_pfp_matched_extensionlast. ff_h_pfp_matched_extensionlast + S (l) = S ((S (l)) * V)) /\ exists ff_q_pfp_matched_extensionlast. U = ff_q_pfp_matched_extensionlast * S ((S (l)) * V) + (l))) /\ (forall pfp_i_matched_extensionprefix pfp_a_matched_extensionprefix. (exists pfp_gap_matched_extensionprefixbound. pfp_gap_matched_extensionprefixbound + S (pfp_i_matched_extensionprefix) = (l)) -> (((exists ff_h_pfp_matched_extensionprefixold. ff_h_pfp_matched_extensionprefixold + S (pfp_a_matched_extensionprefix) = S ((S (pfp_i_matched_extensionprefix)) * v)) /\ exists ff_q_pfp_matched_extensionprefixold. u = ff_q_pfp_matched_extensionprefixold * S ((S (pfp_i_matched_extensionprefix)) * v) + (pfp_a_matched_extensionprefix))) -> (((exists ff_h_pfp_matched_extensionprefixnew. ff_h_pfp_matched_extensionprefixnew + S (pfp_a_matched_extensionprefix) = S ((S (pfp_i_matched_extensionprefix)) * V)) /\ exists ff_q_pfp_matched_extensionprefixnew. U = ff_q_pfp_matched_extensionprefixnew * S ((S (pfp_i_matched_extensionprefix)) * V) + (pfp_a_matched_extensionprefix)))))))Constructive proof overview
Generated structural guide
Construct a genuine matching permutation after adjoining the same last factor, retaining the exact prefix-preservation and fresh-index equations.
The unchanged tactic script uses 2 declared prerequisites and contains 42 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
Direct 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 (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hright
03Separate the logical casesL12–12
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L12
cases hm
04Establish hexL13–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor permutation index extend.
- L13
have hex : ∃ U. ∃ V. PermutationPrefix(U,V,S l) ∧ (BetaAt(U,V,l,l) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(u,v,x,y) → BetaAt(U,V,x,y)))Definitions: PermutationPrefixLtBetaAt - L14
specialize factor_permutation_index_extend (u) - L15
specialize factor_permutation_index_extend (v) - L16
specialize factor_permutation_index_extend (l) - L17
apply factor_permutation_index_extend - L18
exact hm_left
05Separate the logical casesL19–21
06Construct an explicit witnessL22–23
07Separate the logical casesL24–25
08Use earlier factsL26–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
exact hex_witness_witness_left - L27
specialize factor_permutation_matching_append (b) - L28
specialize factor_permutation_matching_append (c) - L29
specialize factor_permutation_matching_append (d) - L30
specialize factor_permutation_matching_append (e) - L31
specialize factor_permutation_matching_append (u) - L32
specialize factor_permutation_matching_append (v) - L33
specialize factor_permutation_matching_append (x) - L34
specialize factor_permutation_matching_append (x1) - L35
specialize factor_permutation_matching_append (l)
09Use earlier factsL36–42
Original exact command ledger · 42 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro u - 0006
intro v - 0007
intro l - 0008
intro p - 0009
intro hm - 0010
intro hleft - 0011
intro hright - 0012
cases hm - 0013
have hex : exists U V. ((((forall pfp_i_append_permutationbounded. (exists pfp_gap_append_permutationboundedindex. pfp_gap_append_permutationboundedindex + S (pfp_i_append_permutationbounded) = (S l)) -> exists pfp_a_append_permutationbounded. (((exists ff_h_pfp_append_permutationboundedentry. ff_h_pfp_append_permutationboundedentry + S (pfp_a_append_permutationbounded) = S ((S (pfp_i_append_permutationbounded)) * V)) /\ exists ff_q_pfp_append_permutationboundedentry. U = ff_q_pfp_append_permutationboundedentry * S ((S (pfp_i_append_permutationbounded)) * V) + (pfp_a_append_permutationbounded))) /\ (exists pfp_gap_append_permutationboundedvalue. pfp_gap_append_permutationboundedvalue + S (pfp_a_append_permutationbounded) = (S l))) /\ (((forall pfp_i_append_permutationinjective pfp_j_append_permutationinjective pfp_a_append_permutationinjective. (exists pfp_gap_append_permutationinjectivefirst. pfp_gap_append_permutationinjectivefirst + S (pfp_i_append_permutationinjective) = (S l)) -> (exists pfp_gap_append_permutationinjectivesecond. pfp_gap_append_permutationinjectivesecond + S (pfp_j_append_permutationinjective) = (S l)) -> (((exists ff_h_pfp_append_permutationinjectiveleft. ff_h_pfp_append_permutationinjectiveleft + S (pfp_a_append_permutationinjective) = S ((S (pfp_i_append_permutationinjective)) * V)) /\ exists ff_q_pfp_append_permutationinjectiveleft. U = ff_q_pfp_append_permutationinjectiveleft * S ((S (pfp_i_append_permutationinjective)) * V) + (pfp_a_append_permutationinjective))) -> (((exists ff_h_pfp_append_permutationinjectiveright. ff_h_pfp_append_permutationinjectiveright + S (pfp_a_append_permutationinjective) = S ((S (pfp_j_append_permutationinjective)) * V)) /\ exists ff_q_pfp_append_permutationinjectiveright. U = ff_q_pfp_append_permutationinjectiveright * S ((S (pfp_j_append_permutationinjective)) * V) + (pfp_a_append_permutationinjective))) -> pfp_i_append_permutationinjective = pfp_j_append_permutationinjective) /\ (forall pfp_a_append_permutationsurjective. (exists pfp_gap_append_permutationsurjectivevalue. pfp_gap_append_permutationsurjectivevalue + S (pfp_a_append_permutationsurjective) = (S l)) -> exists pfp_i_append_permutationsurjective. (exists pfp_gap_append_permutationsurjectiveindex. pfp_gap_append_permutationsurjectiveindex + S (pfp_i_append_permutationsurjective) = (S l)) /\ (((exists ff_h_pfp_append_permutationsurjectiveentry. ff_h_pfp_append_permutationsurjectiveentry + S (pfp_a_append_permutationsurjective) = S ((S (pfp_i_append_permutationsurjective)) * V)) /\ exists ff_q_pfp_append_permutationsurjectiveentry. U = ff_q_pfp_append_permutationsurjectiveentry * S ((S (pfp_i_append_permutationsurjective)) * V) + (pfp_a_append_permutationsurjective)))))))) /\ (((((exists ff_h_pfp_append_permutation_extensionlast. ff_h_pfp_append_permutation_extensionlast + S (l) = S ((S (l)) * V)) /\ exists ff_q_pfp_append_permutation_extensionlast. U = ff_q_pfp_append_permutation_extensionlast * S ((S (l)) * V) + (l))) /\ (forall pfp_i_append_permutation_extensionprefix pfp_a_append_permutation_extensionprefix. (exists pfp_gap_append_permutation_extensionprefixbound. pfp_gap_append_permutation_extensionprefixbound + S (pfp_i_append_permutation_extensionprefix) = (l)) -> (((exists ff_h_pfp_append_permutation_extensionprefixold. ff_h_pfp_append_permutation_extensionprefixold + S (pfp_a_append_permutation_extensionprefix) = S ((S (pfp_i_append_permutation_extensionprefix)) * v)) /\ exists ff_q_pfp_append_permutation_extensionprefixold. u = ff_q_pfp_append_permutation_extensionprefixold * S ((S (pfp_i_append_permutation_extensionprefix)) * v) + (pfp_a_append_permutation_extensionprefix))) -> (((exists ff_h_pfp_append_permutation_extensionprefixnew. ff_h_pfp_append_permutation_extensionprefixnew + S (pfp_a_append_permutation_extensionprefix) = S ((S (pfp_i_append_permutation_extensionprefix)) * V)) /\ exists ff_q_pfp_append_permutation_extensionprefixnew. U = ff_q_pfp_append_permutation_extensionprefixnew * S ((S (pfp_i_append_permutation_extensionprefix)) * V) + (pfp_a_append_permutation_extensionprefix))))))) - 0014
specialize factor_permutation_index_extend (u) - 0015
specialize factor_permutation_index_extend (v) - 0016
specialize factor_permutation_index_extend (l) - 0017
apply factor_permutation_index_extend - 0018
exact hm_left - 0019
cases hex - 0020
cases hex_witness - 0021
cases hex_witness_witness - 0022
exists x - 0023
exists x1 - 0024
split - 0025
split - 0026
exact hex_witness_witness_left - 0027
specialize factor_permutation_matching_append (b) - 0028
specialize factor_permutation_matching_append (c) - 0029
specialize factor_permutation_matching_append (d) - 0030
specialize factor_permutation_matching_append (e) - 0031
specialize factor_permutation_matching_append (u) - 0032
specialize factor_permutation_matching_append (v) - 0033
specialize factor_permutation_matching_append (x) - 0034
specialize factor_permutation_matching_append (x1) - 0035
specialize factor_permutation_matching_append (l) - 0036
specialize factor_permutation_matching_append (p) - 0037
apply factor_permutation_matching_append - 0038
exact hm_right - 0039
exact hex_witness_witness_right - 0040
exact hleft - 0041
exact hright - 0042
exact hex_witness_witness_right