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. ∀ x. ∀ y. ∀ z. Lt(y,p) → Lt(z,p) → BalancedInverse(p,x,y) → BalancedInverse(p,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
4 occurrences
In local proof propositions
4 occurrences
Exact expanded native-PA statement
forall p x y z. (exists wip_strict_gap_unique_y_bound. wip_strict_gap_unique_y_bound + S y = p) -> (exists wip_strict_gap_unique_z_bound. wip_strict_gap_unique_z_bound + S z = p) -> (exists wip_mod_left_unique_xy wip_mod_right_unique_xy. x * y + p * wip_mod_left_unique_xy = 1 + p * wip_mod_right_unique_xy) -> (exists wip_mod_left_unique_xz wip_mod_right_unique_xz. x * z + p * wip_mod_left_unique_xz = 1 + p * wip_mod_right_unique_xz) -> y = zProof neighborhood
Direct theorem prerequisites
PA003L mod_eq_symm PA0020 mod_eq_mul_left PA001Y mod_eq_mul_right PA000B mul_assoc PA000H mul_comm PA0002 mul_one PA000M one_mul PA0024 mod_eq_trans 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 (9)
01Fix variables and assumptionsL1–8
02Establish hreverseL9–14
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
- L9
have hreverse : ModEq(p,1,x · z)Definitions: ModEq(p,1,x · z)Original native command in the exact edition - L10
specialize mod_eq_symm p - L11
specialize mod_eq_symm (x * z) - L12
specialize mod_eq_symm 1 - L13
apply mod_eq_symm - L14
exact hxz
03Establish hleftscaledL15–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul left.
- L15
have hleftscaled : ModEq(p,y · 1,y · (x · z))Definitions: ModEq(p,y · 1,y · (x · z))Original native command in the exact edition - L16
specialize mod_eq_mul_left p - L17
specialize mod_eq_mul_left 1 - L18
specialize mod_eq_mul_left (x * z) - L19
specialize mod_eq_mul_left y - L20
apply mod_eq_mul_left - L21
exact hreverse
04Establish hrightscaledL22–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul right.
- L22
have hrightscaled : ModEq(p,x · y · z,1 · z)Definitions: ModEq(p,x · y · z,1 · z)Original native command in the exact edition - L23
specialize mod_eq_mul_right p - L24
specialize mod_eq_mul_right (x * y) - L25
specialize mod_eq_mul_right 1 - L26
specialize mod_eq_mul_right z - L27
apply mod_eq_mul_right - L28
exact hxy
05Establish hleftL29–31
06Establish hmiddleL32–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul assoc.
07Establish hrightL42–47
08Establish hyzL48–57
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
Original defined command ledger · 62 lines
- 0001
intro p - 0002
intro x - 0003
intro y - 0004
intro z - 0005
intro hy - 0006
intro hz - 0007
intro hxy - 0008
intro hxz - 0009
have hreverse : ModEq(p,1,x · z)Exact native replay line
have hreverse : exists wip_mod_left_unique_reverse_xz wip_mod_right_unique_reverse_xz. 1 + p * wip_mod_left_unique_reverse_xz = x * z + p * wip_mod_right_unique_reverse_xz - 0010
specialize mod_eq_symm p - 0011
specialize mod_eq_symm (x * z) - 0012
specialize mod_eq_symm 1 - 0013
apply mod_eq_symm - 0014
exact hxz - 0015
have hleftscaled : ModEq(p,y · 1,y · (x · z))Exact native replay line
have hleftscaled : exists wip_mod_left_unique_left_scaled wip_mod_right_unique_left_scaled. y * 1 + p * wip_mod_left_unique_left_scaled = y * (x * z) + p * wip_mod_right_unique_left_scaled - 0016
specialize mod_eq_mul_left p - 0017
specialize mod_eq_mul_left 1 - 0018
specialize mod_eq_mul_left (x * z) - 0019
specialize mod_eq_mul_left y - 0020
apply mod_eq_mul_left - 0021
exact hreverse - 0022
have hrightscaled : ModEq(p,x · y · z,1 · z)Exact native replay line
have hrightscaled : exists wip_mod_left_unique_right_scaled wip_mod_right_unique_right_scaled. (x * y) * z + p * wip_mod_left_unique_right_scaled = 1 * z + p * wip_mod_right_unique_right_scaled - 0023
specialize mod_eq_mul_right p - 0024
specialize mod_eq_mul_right (x * y) - 0025
specialize mod_eq_mul_right 1 - 0026
specialize mod_eq_mul_right z - 0027
apply mod_eq_mul_right - 0028
exact hxy - 0029
have hleft : y * 1 = y - 0030
specialize mul_one y - 0031
exact mul_one - 0032
have hmiddle : y * (x * z) = (x * y) * z - 0033
trans (y * x) * z - 0034
symm - 0035
specialize mul_assoc y - 0036
specialize mul_assoc x - 0037
specialize mul_assoc z - 0038
apply mul_assoc - 0039
congr - 0040
apply mul_comm - 0041
refl - 0042
have hright : 1 * z = z - 0043
specialize one_mul z - 0044
exact one_mul - 0045
rewrite hleft at hleftscaled - 0046
rewrite hmiddle at hleftscaled - 0047
rewrite hright at hrightscaled - 0048
have hyz : ModEq(p,y,z)Exact native replay line
have hyz : exists wip_mod_left_unique_result wip_mod_right_unique_result. y + p * wip_mod_left_unique_result = z + p * wip_mod_right_unique_result - 0049
specialize mod_eq_trans p - 0050
specialize mod_eq_trans y - 0051
specialize mod_eq_trans ((x * y) * z) - 0052
specialize mod_eq_trans z - 0053
apply mod_eq_trans - 0054
exact hleftscaled - 0055
exact hrightscaled - 0056
specialize mod_eq_bounded_unique p - 0057
specialize mod_eq_bounded_unique y - 0058
specialize mod_eq_bounded_unique z - 0059
apply mod_eq_bounded_unique - 0060
exact hy - 0061
exact hz - 0062
exact hyz