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
∀ d. ∀ n. ∀ q. ∀ r. ∀ z. ∀ s. DivRem(n,d,q,r) → DivRem(S n,d,z,s) → S r = d ∧ (z = S q ∧ s = 0) ∨ Lt(S r,d) ∧ (z = q ∧ s = S r)Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
3 occurrences
In local proof propositions
2 occurrences
Exact expanded native-PA statement
forall d n q r z s. (((n) = (d) * (q) + (r) /\ exists blsr_lt_gap_successor_cases_old_bound. blsr_lt_gap_successor_cases_old_bound + S (r) = (d))) -> (((S n) = (d) * (z) + (s) /\ exists blsr_lt_gap_successor_cases_new_bound. blsr_lt_gap_successor_cases_new_bound + S (s) = (d))) -> ((S r = d /\ (z = S q /\ s = 0)) \/ ((exists blsr_lt_gap_successor_cases_no_carry. blsr_lt_gap_successor_cases_no_carry + S (S r) = (d)) /\ (z = q /\ s = S r)))Proof neighborhood
Direct theorem prerequisites
Direct theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic 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 (2)
01Fix variables and assumptionsL1–8
02Separate the logical casesL9–10
03Establish hsplitL11–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
04Separate the logical casesL16–18
05Use earlier factsL19–19
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L19
exact hsplit_left
06Establish hequationL20–29
07Use earlier factsL30–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L30
apply PA6
08Establish hboundL31–31
Establish this local claim before using it. It is not an additional assumption.
09Construct an explicit witnessL32–32
Supply the displayed value, then prove that it has the required property.
- L32
exists r
10Calculate and transport equalitiesL33–34
11Use earlier factsL35–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L35
exact hsplit_left
12Establish huniqueL36–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder unique.
- L36
have hunique : z = S q /\ s = 0 - L37
specialize division_remainder_unique d - L38
specialize division_remainder_unique (S n) - L39
specialize division_remainder_unique z - L40
specialize division_remainder_unique s - L41
specialize division_remainder_unique (S q) - L42
specialize division_remainder_unique 0 - L43
apply division_remainder_unique - L44
exact hnew_left - L45
exact hnew_right
13Use earlier factsL46–48
14Separate the logical casesL49–50
15Use earlier factsL51–51
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L51
exact hsplit_right
16Establish hequationL52–57
17Establish huniqueL58–67
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder unique.
- L58
have hunique : z = q /\ s = S r - L59
specialize division_remainder_unique d - L60
specialize division_remainder_unique (S n) - L61
specialize division_remainder_unique z - L62
specialize division_remainder_unique s - L63
specialize division_remainder_unique q - L64
specialize division_remainder_unique (S r) - L65
apply division_remainder_unique - L66
exact hnew_left - L67
exact hnew_right
Original defined command ledger · 70 lines
- 0001
intro d - 0002
intro n - 0003
intro q - 0004
intro r - 0005
intro z - 0006
intro s - 0007
intro hold - 0008
intro hnew - 0009
cases hold - 0010
cases hnew - 0011
have hsplit : S r = d ∨ Lt(S r,d)Exact native replay line
have hsplit : S r = d \/ exists blsr_lt_gap_successor_cases_no_carry. blsr_lt_gap_successor_cases_no_carry + S (S r) = (d) - 0012
specialize le_eq_or_lt (S r) - 0013
specialize le_eq_or_lt d - 0014
apply le_eq_or_lt - 0015
exact hold_right - 0016
cases hsplit - 0017
left - 0018
split - 0019
exact hsplit_left - 0020
have hequation : S n = d * S q + 0 - 0021
trans S (d * q + r) - 0022
congr - 0023
exact hold_left - 0024
trans d * q + S r - 0025
symm - 0026
apply PA4 - 0027
rewrite hsplit_left - 0028
rewrite PA3 - 0029
symm - 0030
apply PA6 - 0031
have hbound : Lt(0,d)Exact native replay line
have hbound : exists blsr_lt_gap_successor_cases_carry_zero. blsr_lt_gap_successor_cases_carry_zero + S (0) = (d) - 0032
exists r - 0033
rewrite PA4 - 0034
rewrite PA3 - 0035
exact hsplit_left - 0036
have hunique : z = S q /\ s = 0 - 0037
specialize division_remainder_unique d - 0038
specialize division_remainder_unique (S n) - 0039
specialize division_remainder_unique z - 0040
specialize division_remainder_unique s - 0041
specialize division_remainder_unique (S q) - 0042
specialize division_remainder_unique 0 - 0043
apply division_remainder_unique - 0044
exact hnew_left - 0045
exact hnew_right - 0046
exact hequation - 0047
exact hbound - 0048
exact hunique - 0049
right - 0050
split - 0051
exact hsplit_right - 0052
have hequation : S n = d * q + S r - 0053
trans S (d * q + r) - 0054
congr - 0055
exact hold_left - 0056
symm - 0057
apply PA4 - 0058
have hunique : z = q /\ s = S r - 0059
specialize division_remainder_unique d - 0060
specialize division_remainder_unique (S n) - 0061
specialize division_remainder_unique z - 0062
specialize division_remainder_unique s - 0063
specialize division_remainder_unique q - 0064
specialize division_remainder_unique (S r) - 0065
apply division_remainder_unique - 0066
exact hnew_left - 0067
exact hnew_right - 0068
exact hequation - 0069
exact hsplit_right - 0070
exact hunique