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. ∀ b. ¬p = 0 → ModEq(p,a,b) ∨ ¬ModEq(p,a,b)Every 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
2 occurrences
In local proof propositions
2 occurrences
Exact expanded native-PA statement
forall p a b. ~(p = 0) -> (exists qr_u_dec_yes qr_v_dec_yes. a + p * qr_u_dec_yes = b + p * qr_v_dec_yes) \/ ~(exists qr_u_dec_no qr_v_dec_no. a + p * qr_u_dec_no = b + p * qr_v_dec_no)Proof neighborhood
Direct theorem prerequisites
Direct 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 (3)
01Fix variables and assumptionsL1–4
02Establish hdaL5–9
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder exists.
- L5
have hda : ∃ qa. ∃ ra. DivRem(a,p,qa,ra)Definitions: DivRem(a,p,qa,ra)Original native command in the exact edition - L6
specialize division_remainder_exists p - L7
specialize division_remainder_exists a - L8
apply division_remainder_exists - L9
exact hp
03Separate the logical casesL10–12
04Establish hdbL13–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder exists.
- L13
have hdb : ∃ qb. ∃ rb. DivRem(b,p,qb,rb)Definitions: DivRem(b,p,qb,rb)Original native command in the exact edition - L14
specialize division_remainder_exists p - L15
specialize division_remainder_exists b - L16
apply division_remainder_exists - L17
exact hp
05Separate the logical casesL18–20
06Establish ha_commL21–26
07Establish hb_commL27–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul comm.
- L27
have hb_comm : b = x2 * p + x3 - L28
trans p * x2 + x3 - L29
exact hdb_witness_witness_left - L30
congr - L31
apply mul_comm - L32
refl - L33
specialize mod_eq_decidable_from_remainders p - L34
specialize mod_eq_decidable_from_remainders a - L35
specialize mod_eq_decidable_from_remainders b - L36
specialize mod_eq_decidable_from_remainders x
08Use earlier factsL37–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 44 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro hp - 0005
have hda : ∃ qa. ∃ ra. DivRem(a,p,qa,ra)Exact native replay line
have hda : exists qa ra. a = p * qa + ra /\ exists ha. ha + S ra = p - 0006
specialize division_remainder_exists p - 0007
specialize division_remainder_exists a - 0008
apply division_remainder_exists - 0009
exact hp - 0010
cases hda - 0011
cases hda_witness - 0012
cases hda_witness_witness - 0013
have hdb : ∃ qb. ∃ rb. DivRem(b,p,qb,rb)Exact native replay line
have hdb : exists qb rb. b = p * qb + rb /\ exists hb. hb + S rb = p - 0014
specialize division_remainder_exists p - 0015
specialize division_remainder_exists b - 0016
apply division_remainder_exists - 0017
exact hp - 0018
cases hdb - 0019
cases hdb_witness - 0020
cases hdb_witness_witness - 0021
have ha_comm : a = x * p + x1 - 0022
trans p * x + x1 - 0023
exact hda_witness_witness_left - 0024
congr - 0025
apply mul_comm - 0026
refl - 0027
have hb_comm : b = x2 * p + x3 - 0028
trans p * x2 + x3 - 0029
exact hdb_witness_witness_left - 0030
congr - 0031
apply mul_comm - 0032
refl - 0033
specialize mod_eq_decidable_from_remainders p - 0034
specialize mod_eq_decidable_from_remainders a - 0035
specialize mod_eq_decidable_from_remainders b - 0036
specialize mod_eq_decidable_from_remainders x - 0037
specialize mod_eq_decidable_from_remainders x1 - 0038
specialize mod_eq_decidable_from_remainders x2 - 0039
specialize mod_eq_decidable_from_remainders x3 - 0040
apply mod_eq_decidable_from_remainders - 0041
exact ha_comm - 0042
exact hda_witness_witness_right - 0043
exact hb_comm - 0044
exact hdb_witness_witness_right