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
∀ p. ∀ a. ∀ x. ∀ y. ∀ z. Prime(p) → ScaledInverse(p,a,x,y) → ScaledInverse(p,a,x,z) → y = zEvery purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
3 occurrences
In local proof propositions
5 occurrences
Exact expanded native-PA statement
forall p a x y z. ((~(p = 1) /\ forall esi_prime_left_unique_prime esi_prime_right_unique_prime. p = esi_prime_left_unique_prime * esi_prime_right_unique_prime -> esi_prime_left_unique_prime = 1 \/ esi_prime_right_unique_prime = 1)) -> ((((~(x = 0) /\ (exists esi_strict_gap_unique_left_left_bound. esi_strict_gap_unique_left_left_bound + S x = p))) /\ (((~(y = 0) /\ (exists esi_strict_gap_unique_left_right_bound. esi_strict_gap_unique_left_right_bound + S y = p))) /\ (exists esi_mod_left_unique_left_mod esi_mod_right_unique_left_mod. (x * y) + p * esi_mod_left_unique_left_mod = (a) + p * esi_mod_right_unique_left_mod)))) -> ((((~(x = 0) /\ (exists esi_strict_gap_unique_right_left_bound. esi_strict_gap_unique_right_left_bound + S x = p))) /\ (((~(z = 0) /\ (exists esi_strict_gap_unique_right_right_bound. esi_strict_gap_unique_right_right_bound + S z = p))) /\ (exists esi_mod_left_unique_right_mod esi_mod_right_unique_right_mod. (x * z) + p * esi_mod_left_unique_right_mod = (a) + p * esi_mod_right_unique_right_mod)))) -> y = zProof neighborhood
Direct theorem prerequisites
PA0039 divisor_le_nonzero PA003A lt_not_le PA003L mod_eq_symm PA0024 mod_eq_trans PA003S prime_mod_cancel PA002U mod_eq_bounded_uniqueDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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–16
03Establish hnotdivL17–18
Establish this local claim before using it. It is not an additional assumption.
04Establish hpxL19–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor le nonzero.
05Use earlier factsL29–29
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L29
exact hpx
06Establish hreverseL30–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
- L30
have hreverse : ModEq(p,a,x · z)Definitions: ModEq(p,a,x · z)Original native command in the exact edition - L31
specialize mod_eq_symm p - L32
specialize mod_eq_symm (x * z) - L33
specialize mod_eq_symm a - L34
apply mod_eq_symm - L35
exact hxz_right_right
07Establish hproductsL36–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L36
have hproducts : ModEq(p,x · y,x · z)Definitions: ModEq(p,x · y,x · z)Original native command in the exact edition - L37
specialize mod_eq_trans p - L38
specialize mod_eq_trans (x * y) - L39
specialize mod_eq_trans a - L40
specialize mod_eq_trans (x * z) - L41
apply mod_eq_trans - L42
exact hxy_right_right - L43
exact hreverse
08Establish hyzL44–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime mod cancel.
Original defined command ledger · 59 lines
- 0001
intro p - 0002
intro a - 0003
intro x - 0004
intro y - 0005
intro z - 0006
intro hp - 0007
intro hxy - 0008
intro hxz - 0009
cases hxy - 0010
cases hxy_left - 0011
cases hxy_right - 0012
cases hxy_right_left - 0013
cases hxz - 0014
cases hxz_left - 0015
cases hxz_right - 0016
cases hxz_right_left - 0017
have hnotdiv : ¬Dvd(p,x)Exact native replay line
have hnotdiv : ~(exists k. x = p * k) - 0018
intro hdiv - 0019
have hpx : Le(p,x)Exact native replay line
have hpx : exists t. t + p = x - 0020
specialize divisor_le_nonzero p - 0021
specialize divisor_le_nonzero x - 0022
apply divisor_le_nonzero - 0023
exact hxy_left_left - 0024
exact hdiv - 0025
specialize lt_not_le x - 0026
specialize lt_not_le p - 0027
apply lt_not_le - 0028
exact hxy_left_right - 0029
exact hpx - 0030
have hreverse : ModEq(p,a,x · z)Exact native replay line
have hreverse : exists esi_mod_left_unique_reverse esi_mod_right_unique_reverse. (a) + p * esi_mod_left_unique_reverse = (x * z) + p * esi_mod_right_unique_reverse - 0031
specialize mod_eq_symm p - 0032
specialize mod_eq_symm (x * z) - 0033
specialize mod_eq_symm a - 0034
apply mod_eq_symm - 0035
exact hxz_right_right - 0036
have hproducts : ModEq(p,x · y,x · z)Exact native replay line
have hproducts : exists esi_mod_left_unique_products esi_mod_right_unique_products. (x * y) + p * esi_mod_left_unique_products = (x * z) + p * esi_mod_right_unique_products - 0037
specialize mod_eq_trans p - 0038
specialize mod_eq_trans (x * y) - 0039
specialize mod_eq_trans a - 0040
specialize mod_eq_trans (x * z) - 0041
apply mod_eq_trans - 0042
exact hxy_right_right - 0043
exact hreverse - 0044
have hyz : ModEq(p,y,z)Exact native replay line
have hyz : exists esi_mod_left_unique_residues esi_mod_right_unique_residues. (y) + p * esi_mod_left_unique_residues = (z) + p * esi_mod_right_unique_residues - 0045
specialize prime_mod_cancel p - 0046
specialize prime_mod_cancel x - 0047
specialize prime_mod_cancel y - 0048
specialize prime_mod_cancel z - 0049
apply prime_mod_cancel - 0050
exact hp - 0051
exact hnotdiv - 0052
exact hproducts - 0053
specialize mod_eq_bounded_unique p - 0054
specialize mod_eq_bounded_unique y - 0055
specialize mod_eq_bounded_unique z - 0056
apply mod_eq_bounded_unique - 0057
exact hxy_right_left_right - 0058
exact hxz_right_left_right - 0059
exact hyz