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 first-order arithmetic statement
forall p d a z. ((~(p = 1) /\ forall frp_prime_left_cd_orbit_prime frp_prime_right_cd_orbit_prime. p = frp_prime_left_cd_orbit_prime * frp_prime_right_cd_orbit_prime -> frp_prime_left_cd_orbit_prime = 1 \/ frp_prime_right_cd_orbit_prime = 1)) -> ~(d=0) -> (exists fms_gap_lt. fms_gap_lt + S (d) = (p)) -> (exists fms_gap_lt. fms_gap_lt + S (a) = (p)) -> exists n. (exists fms_u_mod fms_v_mod. (a+n*d) + (p) * fms_u_mod = (z) + (p) * fms_v_mod)Constructive proof overview
Generated structural guide
An actual bounded inverse proves that every nonzero prime-field step reaches every residue from a given canonical start.
The unchanged tactic script uses 12 declared prerequisites and contains 91 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
prime_bounded_nonzero_mod_inverse Stable theorem; checked-use authorized CD0025 finite_modular_additive_complement mod_eq_mul_right Stable theorem; checked-use authorized mod_eq_add Stable theorem; checked-use authorized mod_eq_refl Stable theorem; checked-use authorized mod_eq_trans Stable theorem; checked-use authorized CD0032 finite_modular_add_modulus one_mul Stable theorem; checked-use authorized mul_assoc Stable theorem; checked-use authorized mul_comm Stable theorem; checked-use authorized add_assoc Stable theorem; checked-use authorized add_comm Stable theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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 (2)
01Fix variables and assumptionsL1–8
02Establish hinvL9–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime bounded nonzero mod inverse.
- L9
have hinv : exists u. ~(u=0) /\ ((exists fms_gap_lt. fms_gap_lt + S (u) = (p)) /\ (exists fms_u_mod fms_v_mod. (d*u) + (p) * fms_u_mod = (1) + (p) * fms_v_mod)) - L10
specialize prime_bounded_nonzero_mod_inverse p - L11
specialize prime_bounded_nonzero_mod_inverse d - L12
apply prime_bounded_nonzero_mod_inverse - L13
exact hp - L14
exact hd - L15
exact hdp
03Separate the logical casesL16–18
04Establish hcompL19–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular additive complement.
05Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hcomp
06Construct an explicit witnessL25–25
Supply the displayed value, then prove that it has the required property.
- L25
exists (z+x1)*x
07Establish hproductL26–26
Establish this local claim before using it. It is not an additional assumption.
- L26
have hproduct : exists fms_u_mod fms_v_mod. (((z+x1)*x)*d) + (p) * fms_u_mod = (z+x1) + (p) * fms_v_mod
08Establish hscaledL27–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul right.
- L27
have hscaled : exists fms_u_mod fms_v_mod. ((d*x)*(z+x1)) + (p) * fms_u_mod = (1*(z+x1)) + (p) * fms_v_mod - L28
specialize mod_eq_mul_right p - L29
specialize mod_eq_mul_right d*x - L30
specialize mod_eq_mul_right 1 - L31
specialize mod_eq_mul_right z+x1 - L32
apply mod_eq_mul_right - L33
exact hinv_witness_right_right
09Establish honeL34–37
10Establish heL38–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul assoc.
11Use earlier factsL48–52
12Calculate and transport equalitiesL53–53
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L53
rewrite he
13Use earlier factsL54–63
Instantiate or apply named facts and discharge the corresponding proof obligations.
14Use earlier factsL64–69
15Establish heL70–79
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
16Use earlier factsL80–81
17Calculate and transport equalitiesL82–82
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L82
refl
18Use earlier factsL83–86
19Calculate and transport equalitiesL87–88
Original exact command ledger · 91 lines
- 0001
intro p - 0002
intro d - 0003
intro a - 0004
intro z - 0005
intro hp - 0006
intro hd - 0007
intro hdp - 0008
intro hap - 0009
have hinv : exists u. ~(u=0) /\ ((exists fms_gap_lt. fms_gap_lt + S (u) = (p)) /\ (exists fms_u_mod fms_v_mod. (d*u) + (p) * fms_u_mod = (1) + (p) * fms_v_mod)) - 0010
specialize prime_bounded_nonzero_mod_inverse p - 0011
specialize prime_bounded_nonzero_mod_inverse d - 0012
apply prime_bounded_nonzero_mod_inverse - 0013
exact hp - 0014
exact hd - 0015
exact hdp - 0016
cases hinv - 0017
cases hinv_witness - 0018
cases hinv_witness_right - 0019
have hcomp : exists v. a+v=p - 0020
specialize finite_modular_additive_complement p - 0021
specialize finite_modular_additive_complement a - 0022
apply finite_modular_additive_complement - 0023
exact hap - 0024
cases hcomp - 0025
exists (z+x1)*x - 0026
have hproduct : exists fms_u_mod fms_v_mod. (((z+x1)*x)*d) + (p) * fms_u_mod = (z+x1) + (p) * fms_v_mod - 0027
have hscaled : exists fms_u_mod fms_v_mod. ((d*x)*(z+x1)) + (p) * fms_u_mod = (1*(z+x1)) + (p) * fms_v_mod - 0028
specialize mod_eq_mul_right p - 0029
specialize mod_eq_mul_right d*x - 0030
specialize mod_eq_mul_right 1 - 0031
specialize mod_eq_mul_right z+x1 - 0032
apply mod_eq_mul_right - 0033
exact hinv_witness_right_right - 0034
have hone : 1*(z+x1)=z+x1 - 0035
specialize one_mul z+x1 - 0036
apply one_mul - 0037
rewrite hone at hscaled - 0038
have he : ((z+x1)*x)*d=(d*x)*(z+x1) - 0039
trans (z+x1)*(x*d) - 0040
specialize mul_assoc z+x1 - 0041
specialize mul_assoc x - 0042
specialize mul_assoc d - 0043
apply mul_assoc - 0044
trans (z+x1)*(d*x) - 0045
congr - 0046
refl - 0047
specialize mul_comm x - 0048
specialize mul_comm d - 0049
apply mul_comm - 0050
specialize mul_comm z+x1 - 0051
specialize mul_comm d*x - 0052
apply mul_comm - 0053
rewrite he - 0054
exact hscaled - 0055
specialize mod_eq_trans p - 0056
specialize mod_eq_trans a+((z+x1)*x)*d - 0057
specialize mod_eq_trans a+(z+x1) - 0058
specialize mod_eq_trans z - 0059
apply mod_eq_trans - 0060
specialize mod_eq_add p - 0061
specialize mod_eq_add a - 0062
specialize mod_eq_add a - 0063
specialize mod_eq_add ((z+x1)*x)*d - 0064
specialize mod_eq_add z+x1 - 0065
apply mod_eq_add - 0066
specialize mod_eq_refl p - 0067
specialize mod_eq_refl a - 0068
apply mod_eq_refl - 0069
exact hproduct - 0070
have he : a+(z+x1)=z+(a+x1) - 0071
trans (a+z)+x1 - 0072
symm - 0073
specialize add_assoc a - 0074
specialize add_assoc z - 0075
specialize add_assoc x1 - 0076
apply add_assoc - 0077
trans (z+a)+x1 - 0078
congr - 0079
specialize add_comm a - 0080
specialize add_comm z - 0081
apply add_comm - 0082
refl - 0083
specialize add_assoc z - 0084
specialize add_assoc a - 0085
specialize add_assoc x1 - 0086
apply add_assoc - 0087
rewrite he - 0088
rewrite hcomp_witness - 0089
specialize finite_modular_add_modulus p - 0090
specialize finite_modular_add_modulus z - 0091
apply finite_modular_add_modulus