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 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))Structural proof guide
Generated structural guide
Extend the accumulated target-modulus product for an exclusive prefix.
Use the direct prerequisites mul_ne_zero, right_factor_divides_product, beta_modulus_nonzero, le_of_succ_le_succ, le_eq_or_lt, multiple_mul_right, le_succ_self, le_trans, lt_to_le, lt_irrefl_expanded, beta_moduli_pairwise_coprime_bounded, coprime_mul_left as previously established PA formulas.
The proof proceeds by case analysis (1), intermediate claims (11), equality transport (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA000S mul_ne_zero PA000T right_factor_divides_product PA000U beta_modulus_nonzero PA000V le_of_succ_le_succ PA000W le_eq_or_lt PA000C multiple_mul_right PA000Q le_succ_self PA000R le_trans PA000X lt_to_le PA0010 lt_irrefl_expanded PA001S beta_moduli_pairwise_coprime_bounded PA001T coprime_mul_leftDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Stable checked-use theorem is independently kernel-checked when replayed.
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
10Establish hsplitL30–34
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.
15Fix variables and assumptionsL50–51
16Establish hkjL52–52
Establish this local claim before using it. It is not an additional assumption.
- L52
have hkj : exists r. r + k = j
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
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 : 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 - 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 : forall d. (exists u. S ((S k) * c) = d * u) -> (exists v. S ((S j) * c) = d * v) -> d = 1 - 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 exact 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 : 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 \/ 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 : 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 : exists r. r + k = j - 0053
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 : 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 : 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 : 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 : 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