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.
Statement with defined notation
∀ N. ∀ c. ∀ k. ∀ P. (∀ x. (∃ y. S x + S y = S N) → Dvd(S x,c)) → Lt(k,N) → ¬P = 0 → (∀ x. Lt(x,k) → Dvd(S (S x · c),P)) → (∀ x. Le(k,x) → Le(x,N) → Coprime(P,S (S x · c))) → ¬P · S (S k · c) = 0 ∧ ((∀ x. Lt(x,S k) → Dvd(S (S x · c),P · S (S k · c))) ∧ (∀ x. Lt(k,x) → Le(x,N) → Coprime(P · S (S k · c),S (S x · c))))Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
12 occurrences
In local proof propositions
11 occurrences
Exact expanded native-PA statement
forall N c k P. (forall t. (exists h. S t + S h = S N) -> exists q. c = S t * q) -> (exists h. h + S k = N) -> ~(P = 0) -> (forall i. (exists h. h + S i = k) -> exists q. P = S ((S i) * c) * q) -> (forall j. (exists g. g + k = j) -> (exists h. h + j = N) -> forall d. (exists u. P = d * u) -> (exists v. S ((S j) * c) = d * v) -> d = 1) -> (~(P * S ((S k) * c) = 0) /\ ((forall i. (exists h. h + S i = S k) -> exists q. P * S ((S k) * c) = S ((S i) * c) * q) /\ forall j. (exists g. g + S k = j) -> (exists h. h + j = N) -> forall d. (exists u. P * S ((S k) * c) = d * u) -> (exists v. S ((S j) * c) = d * v) -> d = 1))Proof neighborhood
Direct theorem prerequisites
BT0021 mul_ne_zero BT004V right_factor_divides_product BT003Y beta_modulus_nonzero BT0017 le_of_succ_le_succ BT001C le_eq_or_lt BT002A multiple_mul_right BT000X le_succ_self BT000F le_trans BT0019 lt_to_le BT001B lt_irrefl_expanded BT004P beta_moduli_pairwise_coprime_bounded BT004R coprime_mul_leftDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic 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 (12)
01Fix variables and assumptionsL1–9
02Establish hnewL10–13
03Separate the logical casesL14–14
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L14
split
04Use earlier factsL15–16
05Fix variables and assumptionsL17–17
Work with arbitrary variables or the premises of the current implication.
- L17
intro hzero
06Use earlier factsL18–21
07Separate the logical casesL22–22
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L22
split
08Fix variables and assumptionsL23–24
09Establish hikL25–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le of succ le succ.
10Establish hsplitL30–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
11Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
cases hsplit
12Calculate and transport equalitiesL36–36
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L36
rewrite hsplit_left
13Use earlier factsL37–39
14Establish hiPL40–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hdiv.
- L40
have hiP : Dvd(S (S i · c),P)Definitions: Dvd(S (S i · c),P)Original native command in the exact edition - L41
specialize hdiv i - L42
apply hdiv - L43
exact hsplit_right - L44
specialize multiple_mul_right (S ((S i) * c)) - L45
specialize multiple_mul_right P - L46
specialize multiple_mul_right (S ((S k) * c)) - L47
apply multiple_mul_right - L48
exact hiP - L49
intro j
15Fix variables and assumptionsL50–51
16Establish hkjL52–52
Establish this local claim before using it. It is not an additional assumption.
17Establish hkSkL53–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
18Establish hPjL62–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfuture.
- L62
have hPj : Coprime(P,S (S j · c))Definitions: Coprime(P,S (S j · c))Original native command in the exact edition - L63
specialize hfuture j - L64
apply hfuture - L65
exact hkj - L66
exact hjN
19Establish hneqL67–72
20Establish hkboundL73–77
21Establish hpairsL78–82
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta moduli pairwise coprime bounded.
- L78
have hpairs : ∀ i. ∀ j. ¬i = j → Le(i,N) → Le(j,N) → Coprime(S (S i · c),S (S j · c))Definitions: Le(i,N)Le(j,N)Coprime(S (S i · c),S (S j · c))Original native command in the exact edition - L79
specialize beta_moduli_pairwise_coprime_bounded N - L80
specialize beta_moduli_pairwise_coprime_bounded c - L81
apply beta_moduli_pairwise_coprime_bounded - L82
exact hcm
22Establish hnewjL83–92
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpairs.
- L83
have hnewj : Coprime(S (S k · c),S (S j · c))Definitions: Coprime(S (S k · c),S (S j · c))Original native command in the exact edition - L84
specialize hpairs k - L85
specialize hpairs j - L86
apply hpairs - L87
exact hneq - L88
exact hkbound - L89
exact hjN - L90
specialize coprime_mul_left P - L91
specialize coprime_mul_left (S ((S k) * c)) - L92
specialize coprime_mul_left (S ((S j) * c))
Original defined command ledger · 95 lines
- 0001
intro N - 0002
intro c - 0003
intro k - 0004
intro P - 0005
intro hcm - 0006
intro hkN - 0007
intro hP - 0008
intro hdiv - 0009
intro hfuture - 0010
have hnew : ~(S ((S k) * c) = 0) - 0011
specialize beta_modulus_nonzero c - 0012
specialize beta_modulus_nonzero k - 0013
exact beta_modulus_nonzero - 0014
split - 0015
specialize mul_ne_zero P - 0016
specialize mul_ne_zero (S ((S k) * c)) - 0017
intro hzero - 0018
apply mul_ne_zero - 0019
exact hP - 0020
exact hnew - 0021
exact hzero - 0022
split - 0023
intro i - 0024
intro hi - 0025
have hik : Le(i,k)Exact native replay line
have hik : exists r. r + i = k - 0026
specialize le_of_succ_le_succ i - 0027
specialize le_of_succ_le_succ k - 0028
apply le_of_succ_le_succ - 0029
exact hi - 0030
have hsplit : i = k ∨ Lt(i,k)Exact native replay line
have hsplit : i = k \/ exists r. r + S i = k - 0031
specialize le_eq_or_lt i - 0032
specialize le_eq_or_lt k - 0033
apply le_eq_or_lt - 0034
exact hik - 0035
cases hsplit - 0036
rewrite hsplit_left - 0037
specialize right_factor_divides_product P - 0038
specialize right_factor_divides_product (S ((S k) * c)) - 0039
exact right_factor_divides_product - 0040
have hiP : Dvd(S (S i · c),P)Exact native replay line
have hiP : exists q. P = S ((S i) * c) * q - 0041
specialize hdiv i - 0042
apply hdiv - 0043
exact hsplit_right - 0044
specialize multiple_mul_right (S ((S i) * c)) - 0045
specialize multiple_mul_right P - 0046
specialize multiple_mul_right (S ((S k) * c)) - 0047
apply multiple_mul_right - 0048
exact hiP - 0049
intro j - 0050
intro hSkj - 0051
intro hjN - 0052
have hkj : Le(k,j)Exact native replay line
have hkj : exists r. r + k = j - 0053
have hkSk : Le(k,S k)Exact native replay line
have hkSk : exists r. r + k = S k - 0054
specialize le_succ_self k - 0055
exact le_succ_self - 0056
specialize le_trans k - 0057
specialize le_trans (S k) - 0058
specialize le_trans j - 0059
apply le_trans - 0060
exact hkSk - 0061
exact hSkj - 0062
have hPj : Coprime(P,S (S j · c))Exact native replay line
have hPj : forall d. (exists u. P = d * u) -> (exists v. S ((S j) * c) = d * v) -> d = 1 - 0063
specialize hfuture j - 0064
apply hfuture - 0065
exact hkj - 0066
exact hjN - 0067
have hneq : ~(k = j) - 0068
intro heq - 0069
rewrite <- heq at hSkj - 0070
specialize lt_irrefl_expanded k - 0071
apply lt_irrefl_expanded - 0072
exact hSkj - 0073
have hkbound : Le(k,N)Exact native replay line
have hkbound : exists r. r + k = N - 0074
specialize lt_to_le k - 0075
specialize lt_to_le N - 0076
apply lt_to_le - 0077
exact hkN - 0078
have hpairs : ∀ i. ∀ j. ¬i = j → Le(i,N) → Le(j,N) → Coprime(S (S i · c),S (S j · c))Exact native replay line
have hpairs : forall i j. ~(i = j) -> (exists hi. hi + i = N) -> (exists hj. hj + j = N) -> forall d. (exists u. S ((S i) * c) = d * u) -> (exists v. S ((S j) * c) = d * v) -> d = 1 - 0079
specialize beta_moduli_pairwise_coprime_bounded N - 0080
specialize beta_moduli_pairwise_coprime_bounded c - 0081
apply beta_moduli_pairwise_coprime_bounded - 0082
exact hcm - 0083
have hnewj : Coprime(S (S k · c),S (S j · c))Exact native replay line
have hnewj : forall d. (exists u. S ((S k) * c) = d * u) -> (exists v. S ((S j) * c) = d * v) -> d = 1 - 0084
specialize hpairs k - 0085
specialize hpairs j - 0086
apply hpairs - 0087
exact hneq - 0088
exact hkbound - 0089
exact hjN - 0090
specialize coprime_mul_left P - 0091
specialize coprime_mul_left (S ((S k) * c)) - 0092
specialize coprime_mul_left (S ((S j) * c)) - 0093
apply coprime_mul_left - 0094
exact hPj - 0095
exact hnewj