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. ∀ t. ∀ w. ¬m = 0 → Coprime(a,m) → Phi(m,t) → Pow(a,t,w) → ModEq(m,w,1)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 111 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 (6)
01Fix variables and assumptionsL1–8
02Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases ht
03Establish hfL10–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product prefix exists.
- L10
have hf : ∃ b. ∃ c. UnitProductPrefix(m,b,c,m)Definitions: UnitProductPrefix(m,b,c,m)Original native command in the exact edition - L11
specialize euler_unit_product_prefix_exists (m) - L12
specialize euler_unit_product_prefix_exists (m) - L13
apply euler_unit_product_prefix_exists
04Separate the logical casesL14–15
05Establish hPL16–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product exists.
- L16
have hP : ∃ P. Product(x,x1,m,P)Definitions: Product(x,x1,m,P)Original native command in the exact edition - L17
specialize beta_product_exists (x) - L18
specialize beta_product_exists (x1) - L19
specialize beta_product_exists (m) - L20
apply beta_product_exists
06Separate the logical casesL21–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
cases hP
07Establish hmapL22–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler multiplier permutation exists.
- L22
have hmap : ∃ r. ∃ s. UnitMultiplierPrefix(a,m,r,s,m) ∧ PermutationPrefix(r,s,m)Definitions: UnitMultiplierPrefix(a,m,r,s,m)PermutationPrefix(r,s,m)Original native command in the exact edition - L23
specialize euler_multiplier_permutation_exists (a) - L24
specialize euler_multiplier_permutation_exists (m) - L25
apply euler_multiplier_permutation_exists - L26
exact hm - L27
exact ha
08Separate the logical casesL28–32
09Establish hcompL33–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta composition exists.
- L33
have hcomp : ∃ z. ∃ d. ∀ y. ∀ n. ∀ k. Lt(y,m) → BetaAt(x3,x4,y,n) → BetaAt(x,x1,n,k) → BetaAt(z,d,y,k)Definitions: Lt(y,m)BetaAt(x3,x4,y,n)BetaAt(x,x1,n,k)BetaAt(z,d,y,k)Original native command in the exact edition - L34
specialize finite_beta_composition_exists (x3) - L35
specialize finite_beta_composition_exists (x4) - L36
specialize finite_beta_composition_exists (x) - L37
specialize finite_beta_composition_exists (x1) - L38
specialize finite_beta_composition_exists (m) - L39
apply finite_beta_composition_exists
10Separate the logical casesL40–41
11Establish hQL42–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product exists.
- L42
have hQ : ∃ Q. Product(x5,x6,m,Q)Definitions: Product(x5,x6,m,Q)Original native command in the exact edition - L43
specialize beta_product_exists (x5) - L44
specialize beta_product_exists (x6) - L45
specialize beta_product_exists (m) - L46
apply beta_product_exists
12Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hQ
13Establish heL48–57
Establish this local claim before using it. It is not an additional assumption.
- L48
have he : x7=x2 - L49
symm - L50
specialize beta_product_permutation_invariant (m) - L51
specialize beta_product_permutation_invariant (x3) - L52
specialize beta_product_permutation_invariant (x4) - L53
specialize beta_product_permutation_invariant (x) - L54
specialize beta_product_permutation_invariant (x1) - L55
specialize beta_product_permutation_invariant (x5) - L56
specialize beta_product_permutation_invariant (x6) - L57
specialize beta_product_permutation_invariant (x2)
14Use earlier factsL58–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
15Establish hsL65–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product reindex scale.
- L65
have hs : UnitScaledPrefix(a,m,x,x1,x5,x6,m)Definitions: UnitScaledPrefix(a,m,x,x1,x5,x6,m)Original native command in the exact edition - L66
specialize euler_unit_product_reindex_scale (a) - L67
specialize euler_unit_product_reindex_scale (m) - L68
specialize euler_unit_product_reindex_scale (x3) - L69
specialize euler_unit_product_reindex_scale (x4) - L70
specialize euler_unit_product_reindex_scale (x) - L71
specialize euler_unit_product_reindex_scale (x1) - L72
specialize euler_unit_product_reindex_scale (x5) - L73
specialize euler_unit_product_reindex_scale (x6) - L74
apply euler_unit_product_reindex_scale
16Use earlier factsL75–78
17Establish hbalanceL79–88
Establish this local claim before using it. It is not an additional assumption.
- L79
have hbalance : ModEq(m,w · x2,x7)Definitions: ModEq(m,w · x2,x7)Original native command in the exact edition - L80
specialize euler_unit_count_product_balance (m) - L81
specialize euler_unit_count_product_balance (a) - L82
specialize euler_unit_count_product_balance (m) - L83
specialize euler_unit_count_product_balance (x) - L84
specialize euler_unit_count_product_balance (x1) - L85
specialize euler_unit_count_product_balance (x5) - L86
specialize euler_unit_count_product_balance (x6) - L87
specialize euler_unit_count_product_balance (t) - L88
specialize euler_unit_count_product_balance (x2)
18Use earlier factsL89–96
Instantiate or apply named facts and discharge the corresponding proof obligations.
19Calculate and transport equalitiesL97–97
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L97
rewrite he at hbalance
20Use earlier factsL98–107
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L98
specialize euler_coprime_weighted_product_cancel (m) - L99
specialize euler_coprime_weighted_product_cancel (x2) - L100
specialize euler_coprime_weighted_product_cancel (w) - L101
apply euler_coprime_weighted_product_cancel - L102
exact hm - L103
specialize euler_unit_product_coprime (m) - L104
specialize euler_unit_product_coprime (m) - L105
specialize euler_unit_product_coprime (x) - L106
specialize euler_unit_product_coprime (x1) - L107
specialize euler_unit_product_coprime (x2)
Original defined command ledger · 111 lines
- 0001
intro a - 0002
intro m - 0003
intro t - 0004
intro w - 0005
intro hm - 0006
intro ha - 0007
intro ht - 0008
intro hw - 0009
cases ht - 0010
have hf : ∃ b. ∃ c. UnitProductPrefix(m,b,c,m) - 0011
specialize euler_unit_product_prefix_exists (m) - 0012
specialize euler_unit_product_prefix_exists (m) - 0013
apply euler_unit_product_prefix_exists - 0014
cases hf - 0015
cases hf_witness - 0016
have hP : ∃ P. Product(x,x1,m,P) - 0017
specialize beta_product_exists (x) - 0018
specialize beta_product_exists (x1) - 0019
specialize beta_product_exists (m) - 0020
apply beta_product_exists - 0021
cases hP - 0022
have hmap : ∃ r. ∃ s. UnitMultiplierPrefix(a,m,r,s,m) ∧ PermutationPrefix(r,s,m) - 0023
specialize euler_multiplier_permutation_exists (a) - 0024
specialize euler_multiplier_permutation_exists (m) - 0025
apply euler_multiplier_permutation_exists - 0026
exact hm - 0027
exact ha - 0028
cases hmap - 0029
cases hmap_witness - 0030
cases hmap_witness_witness - 0031
cases hmap_witness_witness_right - 0032
cases hmap_witness_witness_right_right - 0033
have hcomp : ∃ z. ∃ d. ∀ y. ∀ n. ∀ k. Lt(y,m) → BetaAt(x3,x4,y,n) → BetaAt(x,x1,n,k) → BetaAt(z,d,y,k) - 0034
specialize finite_beta_composition_exists (x3) - 0035
specialize finite_beta_composition_exists (x4) - 0036
specialize finite_beta_composition_exists (x) - 0037
specialize finite_beta_composition_exists (x1) - 0038
specialize finite_beta_composition_exists (m) - 0039
apply finite_beta_composition_exists - 0040
cases hcomp - 0041
cases hcomp_witness - 0042
have hQ : ∃ Q. Product(x5,x6,m,Q) - 0043
specialize beta_product_exists (x5) - 0044
specialize beta_product_exists (x6) - 0045
specialize beta_product_exists (m) - 0046
apply beta_product_exists - 0047
cases hQ - 0048
have he : x7=x2 - 0049
symm - 0050
specialize beta_product_permutation_invariant (m) - 0051
specialize beta_product_permutation_invariant (x3) - 0052
specialize beta_product_permutation_invariant (x4) - 0053
specialize beta_product_permutation_invariant (x) - 0054
specialize beta_product_permutation_invariant (x1) - 0055
specialize beta_product_permutation_invariant (x5) - 0056
specialize beta_product_permutation_invariant (x6) - 0057
specialize beta_product_permutation_invariant (x2) - 0058
specialize beta_product_permutation_invariant (x7) - 0059
apply beta_product_permutation_invariant - 0060
exact hmap_witness_witness_right_left - 0061
exact hmap_witness_witness_right_right_left - 0062
exact hcomp_witness_witness - 0063
exact hP_witness - 0064
exact hQ_witness - 0065
have hs : UnitScaledPrefix(a,m,x,x1,x5,x6,m) - 0066
specialize euler_unit_product_reindex_scale (a) - 0067
specialize euler_unit_product_reindex_scale (m) - 0068
specialize euler_unit_product_reindex_scale (x3) - 0069
specialize euler_unit_product_reindex_scale (x4) - 0070
specialize euler_unit_product_reindex_scale (x) - 0071
specialize euler_unit_product_reindex_scale (x1) - 0072
specialize euler_unit_product_reindex_scale (x5) - 0073
specialize euler_unit_product_reindex_scale (x6) - 0074
apply euler_unit_product_reindex_scale - 0075
exact ha - 0076
exact hmap_witness_witness_left - 0077
exact hf_witness_witness - 0078
exact hcomp_witness_witness - 0079
have hbalance : ModEq(m,w · x2,x7) - 0080
specialize euler_unit_count_product_balance (m) - 0081
specialize euler_unit_count_product_balance (a) - 0082
specialize euler_unit_count_product_balance (m) - 0083
specialize euler_unit_count_product_balance (x) - 0084
specialize euler_unit_count_product_balance (x1) - 0085
specialize euler_unit_count_product_balance (x5) - 0086
specialize euler_unit_count_product_balance (x6) - 0087
specialize euler_unit_count_product_balance (t) - 0088
specialize euler_unit_count_product_balance (x2) - 0089
specialize euler_unit_count_product_balance (x7) - 0090
specialize euler_unit_count_product_balance (w) - 0091
apply euler_unit_count_product_balance - 0092
exact ht_right - 0093
exact hs - 0094
exact hP_witness - 0095
exact hQ_witness - 0096
exact hw - 0097
rewrite he at hbalance - 0098
specialize euler_coprime_weighted_product_cancel (m) - 0099
specialize euler_coprime_weighted_product_cancel (x2) - 0100
specialize euler_coprime_weighted_product_cancel (w) - 0101
apply euler_coprime_weighted_product_cancel - 0102
exact hm - 0103
specialize euler_unit_product_coprime (m) - 0104
specialize euler_unit_product_coprime (m) - 0105
specialize euler_unit_product_coprime (x) - 0106
specialize euler_unit_product_coprime (x1) - 0107
specialize euler_unit_product_coprime (x2) - 0108
apply euler_unit_product_coprime - 0109
exact hf_witness_witness - 0110
exact hP_witness - 0111
exact hbalance