Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
The exact G014 theorem covers m>1 and genuinely invertible a. Phi counts coprime residues independently of the conclusion. The broader coprime theorem handles m=1 by congruence, not by asserting that one is a canonical remainder. Multiplicative-order and RSA statements are not claimed.
Exact theorem in conservative defined notation
∀ a. ∀ m. ∀ r. ∀ s. ∀ b. ∀ c. ∀ z. ∀ d. Coprime(a,m) → UnitMultiplierPrefix(a,m,r,s,m) → UnitProductPrefix(m,b,c,m) → (∀ x. ∀ y. ∀ n. Lt(x,m) → BetaAt(r,s,x,y) → BetaAt(b,c,y,n) → BetaAt(z,d,x,n)) → UnitScaledPrefix(a,m,b,c,z,d,m)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 86 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–18
03Establish hindexL19–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hmap.
- L19
have hindex : ∃ j. BetaAt(r,s,i,j) ∧ CanonicalModularResidue(m,a · i,j)Definitions: BetaAt(r,s,i,j)CanonicalModularResidue(m,a · i,j)Original native command in the exact edition - L20
specialize hmap (i) - L21
apply hmap - L22
exact hi
04Separate the logical casesL23–25
05Establish hsourceL26–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product prefix entry.
- L26
have hsource : UnitProductFactor(m,i,u)Definitions: UnitProductFactor(m,i,u)Original native command in the exact edition - L27
specialize euler_unit_product_prefix_entry (m) - L28
specialize euler_unit_product_prefix_entry (b) - L29
specialize euler_unit_product_prefix_entry (c) - L30
specialize euler_unit_product_prefix_entry (m) - L31
specialize euler_unit_product_prefix_entry (i) - L32
specialize euler_unit_product_prefix_entry (u) - L33
apply euler_unit_product_prefix_entry - L34
exact hfac - L35
exact hi
06Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact hu
07Establish htargetL37–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfac.
- L37
have htarget : ∃ w. BetaAt(b,c,x,w) ∧ UnitProductFactor(m,x,w)Definitions: BetaAt(b,c,x,w)UnitProductFactor(m,x,w)Original native command in the exact edition - L38
specialize hfac (x) - L39
apply hfac - L40
exact hindex_witness_right_left
08Separate the logical casesL41–42
09Establish heL43–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
10Use earlier factsL53–57
11Calculate and transport equalitiesL58–59
12Separate the logical casesL60–60
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L60
split
13Fix variables and assumptionsL61–61
Work with arbitrary variables or the premises of the current implication.
- L61
intro hunit
14Use earlier factsL62–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
specialize euler_unit_factor_scaled_congruence (a) - L63
specialize euler_unit_factor_scaled_congruence (m) - L64
specialize euler_unit_factor_scaled_congruence (i) - L65
specialize euler_unit_factor_scaled_congruence (x) - L66
specialize euler_unit_factor_scaled_congruence (u) - L67
specialize euler_unit_factor_scaled_congruence (v) - L68
apply euler_unit_factor_scaled_congruence - L69
exact ha - L70
exact hindex_witness_right_right - L71
exact hsource
15Use earlier factsL72–73
16Fix variables and assumptionsL74–74
Work with arbitrary variables or the premises of the current implication.
- L74
intro hnot
17Use earlier factsL75–84
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
specialize euler_nonunit_factor_unchanged_congruence (a) - L76
specialize euler_nonunit_factor_unchanged_congruence (m) - L77
specialize euler_nonunit_factor_unchanged_congruence (i) - L78
specialize euler_nonunit_factor_unchanged_congruence (x) - L79
specialize euler_nonunit_factor_unchanged_congruence (u) - L80
specialize euler_nonunit_factor_unchanged_congruence (v) - L81
apply euler_nonunit_factor_unchanged_congruence - L82
exact ha - L83
exact hindex_witness_right_right - L84
exact hsource
Original defined command ledger · 86 lines
- 0001
intro a - 0002
intro m - 0003
intro r - 0004
intro s - 0005
intro b - 0006
intro c - 0007
intro z - 0008
intro d - 0009
intro ha - 0010
intro hmap - 0011
intro hfac - 0012
intro hcomp - 0013
intro i - 0014
intro u - 0015
intro v - 0016
intro hi - 0017
intro hu - 0018
intro hv - 0019
have hindex : ∃ j. BetaAt(r,s,i,j) ∧ CanonicalModularResidue(m,a · i,j) - 0020
specialize hmap (i) - 0021
apply hmap - 0022
exact hi - 0023
cases hindex - 0024
cases hindex_witness - 0025
cases hindex_witness_right - 0026
have hsource : UnitProductFactor(m,i,u) - 0027
specialize euler_unit_product_prefix_entry (m) - 0028
specialize euler_unit_product_prefix_entry (b) - 0029
specialize euler_unit_product_prefix_entry (c) - 0030
specialize euler_unit_product_prefix_entry (m) - 0031
specialize euler_unit_product_prefix_entry (i) - 0032
specialize euler_unit_product_prefix_entry (u) - 0033
apply euler_unit_product_prefix_entry - 0034
exact hfac - 0035
exact hi - 0036
exact hu - 0037
have htarget : ∃ w. BetaAt(b,c,x,w) ∧ UnitProductFactor(m,x,w) - 0038
specialize hfac (x) - 0039
apply hfac - 0040
exact hindex_witness_right_left - 0041
cases htarget - 0042
cases htarget_witness - 0043
have he : x1=v - 0044
specialize beta_at_unique (z) - 0045
specialize beta_at_unique (d) - 0046
specialize beta_at_unique (i) - 0047
specialize beta_at_unique (x1) - 0048
specialize beta_at_unique (v) - 0049
apply beta_at_unique - 0050
specialize hcomp (i) - 0051
specialize hcomp (x) - 0052
specialize hcomp (x1) - 0053
apply hcomp - 0054
exact hi - 0055
exact hindex_witness_left - 0056
exact htarget_witness_left - 0057
exact hv - 0058
rewrite he at htarget_witness_right - 0059
rewrite he at htarget_witness_right - 0060
split - 0061
intro hunit - 0062
specialize euler_unit_factor_scaled_congruence (a) - 0063
specialize euler_unit_factor_scaled_congruence (m) - 0064
specialize euler_unit_factor_scaled_congruence (i) - 0065
specialize euler_unit_factor_scaled_congruence (x) - 0066
specialize euler_unit_factor_scaled_congruence (u) - 0067
specialize euler_unit_factor_scaled_congruence (v) - 0068
apply euler_unit_factor_scaled_congruence - 0069
exact ha - 0070
exact hindex_witness_right_right - 0071
exact hsource - 0072
exact htarget_witness_right - 0073
exact hunit - 0074
intro hnot - 0075
specialize euler_nonunit_factor_unchanged_congruence (a) - 0076
specialize euler_nonunit_factor_unchanged_congruence (m) - 0077
specialize euler_nonunit_factor_unchanged_congruence (i) - 0078
specialize euler_nonunit_factor_unchanged_congruence (x) - 0079
specialize euler_nonunit_factor_unchanged_congruence (u) - 0080
specialize euler_nonunit_factor_unchanged_congruence (v) - 0081
apply euler_nonunit_factor_unchanged_congruence - 0082
exact ha - 0083
exact hindex_witness_right_right - 0084
exact hsource - 0085
exact htarget_witness_right - 0086
exact hnot