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.
The original division, gcd, cancellation, and factor-existence foundations are exposed through checked wrappers. Unordered uniqueness adds an actual bounded, injective, surjective index map matching repeated prime occurrences. The empty factor list represents one, not zero.
Exact theorem in conservative defined notation
∀ b. ∀ c. ∀ d. ∀ e. ∀ D. ∀ E. ∀ u. ∀ v. ∀ l. ∀ j. ∀ p. ∀ q. Lt(j,l) → PermutationPrefix(u,v,l) ∧ FactorListMatching(b,c,D,E,u,v,l) → BetaAt(b,c,l,p) → BetaAt(d,e,j,p) ∧ (BetaAt(d,e,l,q) ∧ (BetaAt(D,E,j,q) ∧ (BetaAt(D,E,l,p) ∧ (∀ x. ∀ y. Lt(x,S l) → ¬x = j → ¬x = l → BetaAt(d,e,x,y) → BetaAt(D,E,x,y))))) → ∃ x. ∃ y. PermutationPrefix(x,y,S l) ∧ FactorListMatching(b,c,d,e,x,y,S l)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 117 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.
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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–16
03Establish hrightL17–17
Establish this local claim before using it. It is not an additional assumption.
- L17
have hright : BetaAt(D,E,l,p)Definitions: BetaAt(D,E,l,p)Original native command in the exact edition
04Separate the logical casesL18–21
05Use earlier factsL22–22
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L22
exact hs_right_right_right_left
06Establish hfullL23–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor permutation matched append.
- L23
have hfull : ∃ U. ∃ V. PermutationPrefix(U,V,S l) ∧ FactorListMatching(b,c,D,E,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: PermutationPrefix(U,V,S l)FactorListMatching(b,c,D,E,U,V,S l)BetaAt(U,V,l,l)Lt(x,l)BetaAt(u,v,x,y)BetaAt(U,V,x,y)Original native command in the exact edition - L24
specialize factor_permutation_matched_append (b) - L25
specialize factor_permutation_matched_append (c) - L26
specialize factor_permutation_matched_append (D) - L27
specialize factor_permutation_matched_append (E) - L28
specialize factor_permutation_matched_append (u) - L29
specialize factor_permutation_matched_append (v) - L30
specialize factor_permutation_matched_append (l) - L31
specialize factor_permutation_matched_append (p) - L32
apply factor_permutation_matched_append
07Use earlier factsL33–35
08Separate the logical casesL36–43
09Establish hpreimageL44–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hm left right right.
- L44
have hpreimage : ∃ i. Lt(i,l) ∧ BetaAt(u,v,i,j)Definitions: Lt(i,l)BetaAt(u,v,i,j)Original native command in the exact edition - L45
specialize hm_left_right_right (j) - L46
apply hm_left_right_right - L47
exact hj
10Separate the logical casesL48–49
11Establish hmapiL50–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfull witness witness right right.
- L50
have hmapi : BetaAt(x,x1,x2,j)Definitions: BetaAt(x,x1,x2,j)Original native command in the exact edition - L51
specialize hfull_witness_witness_right_right (x2) - L52
specialize hfull_witness_witness_right_right (j) - L53
apply hfull_witness_witness_right_right - L54
exact hpreimage_witness_left - L55
exact hpreimage_witness_right
12Establish hmapnewL56–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix swap last from entries.
- L56
have hmapnew : ∃ U. ∃ V. BetaAt(U,V,x2,l) ∧ (BetaAt(U,V,l,j) ∧ (∀ y. ∀ z. Lt(y,S l) → ¬y = x2 → ¬y = l → BetaAt(x,x1,y,z) → BetaAt(U,V,y,z)))Definitions: BetaAt(U,V,x2,l)BetaAt(U,V,l,j)Lt(y,S l)BetaAt(x,x1,y,z)BetaAt(U,V,y,z)Original native command in the exact edition - L57
specialize beta_prefix_swap_last_from_entries (x) - L58
specialize beta_prefix_swap_last_from_entries (x1) - L59
specialize beta_prefix_swap_last_from_entries (l) - L60
specialize beta_prefix_swap_last_from_entries (x2) - L61
specialize beta_prefix_swap_last_from_entries (j) - L62
specialize beta_prefix_swap_last_from_entries (l) - L63
apply beta_prefix_swap_last_from_entries - L64
exact hpreimage_witness_left - L65
exact hmapi
13Use earlier factsL66–66
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L66
exact hfull_witness_witness_right_left
14Separate the logical casesL67–70
15Establish hmapswapL71–71
Establish this local claim before using it. It is not an additional assumption.
- L71
have hmapswap : BetaAt(x,x1,x2,j) ∧ (BetaAt(x,x1,l,l) ∧ (BetaAt(x3,x4,x2,l) ∧ (BetaAt(x3,x4,l,j) ∧ (∀ y. ∀ z. Lt(y,S l) → ¬y = x2 → ¬y = l → BetaAt(x,x1,y,z) → BetaAt(x3,x4,y,z)))))Definitions: BetaAt(x,x1,x2,j)BetaAt(x,x1,l,l)BetaAt(x3,x4,x2,l)BetaAt(x3,x4,l,j)Lt(y,S l)BetaAt(x,x1,y,z)BetaAt(x3,x4,y,z)Original native command in the exact edition
16Separate the logical casesL72–72
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L72
split
17Use earlier factsL73–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
exact hmapi
18Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
split
19Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
exact hfull_witness_witness_right_left
20Separate the logical casesL76–76
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L76
split
21Use earlier factsL77–77
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L77
exact hmapnew_witness_witness_left
22Separate the logical casesL78–78
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L78
split
23Use earlier factsL79–80
24Construct an explicit witnessL81–82
25Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
split
26Use earlier factsL84–93
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L84
specialize factor_permutation_swap_bijection (x) - L85
specialize factor_permutation_swap_bijection (x1) - L86
specialize factor_permutation_swap_bijection (x3) - L87
specialize factor_permutation_swap_bijection (x4) - L88
specialize factor_permutation_swap_bijection (l) - L89
specialize factor_permutation_swap_bijection (x2) - L90
specialize factor_permutation_swap_bijection (j) - L91
specialize factor_permutation_swap_bijection (l) - L92
apply factor_permutation_swap_bijection - L93
exact hpreimage_witness_left
27Use earlier factsL94–103
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
exact hfull_witness_witness_left_left - L95
exact hmapswap - L96
specialize factor_permutation_matching_unswap (b) - L97
specialize factor_permutation_matching_unswap (c) - L98
specialize factor_permutation_matching_unswap (d) - L99
specialize factor_permutation_matching_unswap (e) - L100
specialize factor_permutation_matching_unswap (D) - L101
specialize factor_permutation_matching_unswap (E) - L102
specialize factor_permutation_matching_unswap (x) - L103
specialize factor_permutation_matching_unswap (x1)
28Use earlier factsL104–113
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
specialize factor_permutation_matching_unswap (x3) - L105
specialize factor_permutation_matching_unswap (x4) - L106
specialize factor_permutation_matching_unswap (l) - L107
specialize factor_permutation_matching_unswap (x2) - L108
specialize factor_permutation_matching_unswap (j) - L109
specialize factor_permutation_matching_unswap (p) - L110
specialize factor_permutation_matching_unswap (q) - L111
apply factor_permutation_matching_unswap - L112
exact hpreimage_witness_left - L113
exact hj
Original defined command ledger · 117 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 l - 0010
intro j - 0011
intro p - 0012
intro q - 0013
intro hj - 0014
intro hm - 0015
intro hleft - 0016
intro hs - 0017
have hright : BetaAt(D,E,l,p) - 0018
cases hs - 0019
cases hs_right - 0020
cases hs_right_right - 0021
cases hs_right_right_right - 0022
exact hs_right_right_right_left - 0023
have hfull : ∃ U. ∃ V. PermutationPrefix(U,V,S l) ∧ FactorListMatching(b,c,D,E,U,V,S l) ∧ (BetaAt(U,V,l,l) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(u,v,x,y) → BetaAt(U,V,x,y))) - 0024
specialize factor_permutation_matched_append (b) - 0025
specialize factor_permutation_matched_append (c) - 0026
specialize factor_permutation_matched_append (D) - 0027
specialize factor_permutation_matched_append (E) - 0028
specialize factor_permutation_matched_append (u) - 0029
specialize factor_permutation_matched_append (v) - 0030
specialize factor_permutation_matched_append (l) - 0031
specialize factor_permutation_matched_append (p) - 0032
apply factor_permutation_matched_append - 0033
exact hm - 0034
exact hleft - 0035
exact hright - 0036
cases hfull - 0037
cases hfull_witness - 0038
cases hfull_witness_witness - 0039
cases hfull_witness_witness_left - 0040
cases hfull_witness_witness_right - 0041
cases hm - 0042
cases hm_left - 0043
cases hm_left_right - 0044
have hpreimage : ∃ i. Lt(i,l) ∧ BetaAt(u,v,i,j) - 0045
specialize hm_left_right_right (j) - 0046
apply hm_left_right_right - 0047
exact hj - 0048
cases hpreimage - 0049
cases hpreimage_witness - 0050
have hmapi : BetaAt(x,x1,x2,j) - 0051
specialize hfull_witness_witness_right_right (x2) - 0052
specialize hfull_witness_witness_right_right (j) - 0053
apply hfull_witness_witness_right_right - 0054
exact hpreimage_witness_left - 0055
exact hpreimage_witness_right - 0056
have hmapnew : ∃ U. ∃ V. BetaAt(U,V,x2,l) ∧ (BetaAt(U,V,l,j) ∧ (∀ y. ∀ z. Lt(y,S l) → ¬y = x2 → ¬y = l → BetaAt(x,x1,y,z) → BetaAt(U,V,y,z))) - 0057
specialize beta_prefix_swap_last_from_entries (x) - 0058
specialize beta_prefix_swap_last_from_entries (x1) - 0059
specialize beta_prefix_swap_last_from_entries (l) - 0060
specialize beta_prefix_swap_last_from_entries (x2) - 0061
specialize beta_prefix_swap_last_from_entries (j) - 0062
specialize beta_prefix_swap_last_from_entries (l) - 0063
apply beta_prefix_swap_last_from_entries - 0064
exact hpreimage_witness_left - 0065
exact hmapi - 0066
exact hfull_witness_witness_right_left - 0067
cases hmapnew - 0068
cases hmapnew_witness - 0069
cases hmapnew_witness_witness - 0070
cases hmapnew_witness_witness_right - 0071
have hmapswap : BetaAt(x,x1,x2,j) ∧ (BetaAt(x,x1,l,l) ∧ (BetaAt(x3,x4,x2,l) ∧ (BetaAt(x3,x4,l,j) ∧ (∀ y. ∀ z. Lt(y,S l) → ¬y = x2 → ¬y = l → BetaAt(x,x1,y,z) → BetaAt(x3,x4,y,z))))) - 0072
split - 0073
exact hmapi - 0074
split - 0075
exact hfull_witness_witness_right_left - 0076
split - 0077
exact hmapnew_witness_witness_left - 0078
split - 0079
exact hmapnew_witness_witness_right_left - 0080
exact hmapnew_witness_witness_right_right - 0081
exists x3 - 0082
exists x4 - 0083
split - 0084
specialize factor_permutation_swap_bijection (x) - 0085
specialize factor_permutation_swap_bijection (x1) - 0086
specialize factor_permutation_swap_bijection (x3) - 0087
specialize factor_permutation_swap_bijection (x4) - 0088
specialize factor_permutation_swap_bijection (l) - 0089
specialize factor_permutation_swap_bijection (x2) - 0090
specialize factor_permutation_swap_bijection (j) - 0091
specialize factor_permutation_swap_bijection (l) - 0092
apply factor_permutation_swap_bijection - 0093
exact hpreimage_witness_left - 0094
exact hfull_witness_witness_left_left - 0095
exact hmapswap - 0096
specialize factor_permutation_matching_unswap (b) - 0097
specialize factor_permutation_matching_unswap (c) - 0098
specialize factor_permutation_matching_unswap (d) - 0099
specialize factor_permutation_matching_unswap (e) - 0100
specialize factor_permutation_matching_unswap (D) - 0101
specialize factor_permutation_matching_unswap (E) - 0102
specialize factor_permutation_matching_unswap (x) - 0103
specialize factor_permutation_matching_unswap (x1) - 0104
specialize factor_permutation_matching_unswap (x3) - 0105
specialize factor_permutation_matching_unswap (x4) - 0106
specialize factor_permutation_matching_unswap (l) - 0107
specialize factor_permutation_matching_unswap (x2) - 0108
specialize factor_permutation_matching_unswap (j) - 0109
specialize factor_permutation_matching_unswap (p) - 0110
specialize factor_permutation_matching_unswap (q) - 0111
apply factor_permutation_matching_unswap - 0112
exact hpreimage_witness_left - 0113
exact hj - 0114
exact hfull_witness_witness_left_left - 0115
exact hfull_witness_witness_left_right - 0116
exact hs - 0117
exact hmapswap