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. ∀ bit. DivRem(n,d,q,r) → DivRem(S n,d,z,s) → bit = 1 ∧ Dvd(d,S n) ∨ bit = 0 ∧ ¬Dvd(d,S n) → z = q + bitEvery 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
4 occurrences
In local proof propositions
2 occurrences
Exact expanded native-PA statement
forall d n q r z s bit. (((n) = (d) * (q) + (r) /\ exists blsr_lt_gap_quotient_bit_old_bound. blsr_lt_gap_quotient_bit_old_bound + S (r) = (d))) -> (((S n) = (d) * (z) + (s) /\ exists blsr_lt_gap_quotient_bit_new_bound. blsr_lt_gap_quotient_bit_new_bound + S (s) = (d))) -> ((bit = 1 /\ (exists k. S n = d * k)) \/ (bit = 0 /\ ~(exists k. S n = d * k))) -> z = q + bitProof neighborhood
Direct theorem prerequisites
BT00SG division_remainder_successor_cases BT000L add_eq_zero_right BT000C succ_ne_zero BT001W multiple_has_zero_remainder BT001U division_remainder_unique BT001V zero_remainder_implies_multipleDirect 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 (6)
01Fix variables and assumptionsL1–10
02Establish hcasesL11–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder successor cases.
- L11
have hcases : S r = d ∧ (z = S q ∧ s = 0) ∨ Lt(S r,d) ∧ (z = q ∧ s = S r)Definitions: Lt(S r,d)Original native command in the exact edition - L12
specialize division_remainder_successor_cases d - L13
specialize division_remainder_successor_cases n - L14
specialize division_remainder_successor_cases q - L15
specialize division_remainder_successor_cases r - L16
specialize division_remainder_successor_cases z - L17
specialize division_remainder_successor_cases s - L18
apply division_remainder_successor_cases - L19
exact hold - L20
exact hnew
03Separate the logical casesL21–25
04Calculate and transport equalitiesL26–30
05Separate the logical casesL31–32
06Establish hd0L33–34
07Separate the logical casesL35–36
08Calculate and transport equalitiesL37–37
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L37
rewrite hd at hold_right_witness
09Establish hsr0L38–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
10Establish hzeroL46–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple has zero remainder.
11Separate the logical casesL52–55
12Establish huniqueL56–56
Establish this local claim before using it. It is not an additional assumption.
- L56
have hunique : z = x /\ s = x1
13Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
cases hnew
14Use earlier factsL58–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
specialize division_remainder_unique d - L59
specialize division_remainder_unique (S n) - L60
specialize division_remainder_unique z - L61
specialize division_remainder_unique s - L62
specialize division_remainder_unique x - L63
specialize division_remainder_unique x1 - L64
apply division_remainder_unique - L65
exact hnew_left - L66
exact hnew_right - L67
exact hzero_witness_witness_left_left
15Use earlier factsL68–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L68
exact hzero_witness_witness_right
16Separate the logical casesL69–69
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L69
cases hunique
17Establish hs0L70–73
18Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
exfalso
19Use earlier factsL75–76
20Calculate and transport equalitiesL77–78
21Use earlier factsL79–80
22Separate the logical casesL81–85
23Use earlier factsL86–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
apply hbit_right_right
24Separate the logical casesL87–87
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L87
cases hnew
25Calculate and transport equalitiesL88–88
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L88
rewrite hcases_left_right_right at hnew_left
26Use earlier factsL89–93
27Separate the logical casesL94–95
Original defined command ledger · 99 lines
- 0001
intro d - 0002
intro n - 0003
intro q - 0004
intro r - 0005
intro z - 0006
intro s - 0007
intro bit - 0008
intro hold - 0009
intro hnew - 0010
intro hbit - 0011
have hcases : S r = d ∧ (z = S q ∧ s = 0) ∨ Lt(S r,d) ∧ (z = q ∧ s = S r)Exact native replay line
have hcases : ((S r = d /\ (z = S q /\ s = 0)) \/ ((exists blsr_lt_gap_quotient_bit_cases_no_carry. blsr_lt_gap_quotient_bit_cases_no_carry + S (S r) = (d)) /\ (z = q /\ s = S r))) - 0012
specialize division_remainder_successor_cases d - 0013
specialize division_remainder_successor_cases n - 0014
specialize division_remainder_successor_cases q - 0015
specialize division_remainder_successor_cases r - 0016
specialize division_remainder_successor_cases z - 0017
specialize division_remainder_successor_cases s - 0018
apply division_remainder_successor_cases - 0019
exact hold - 0020
exact hnew - 0021
cases hbit - 0022
cases hbit_left - 0023
cases hcases - 0024
cases hcases_left - 0025
cases hcases_left_right - 0026
rewrite hbit_left_left - 0027
rewrite hcases_left_right_left - 0028
rewrite PA4 - 0029
rewrite PA3 - 0030
refl - 0031
cases hcases_right - 0032
cases hcases_right_right - 0033
have hd0 : ~(d = 0) - 0034
intro hd - 0035
cases hold - 0036
cases hold_right - 0037
rewrite hd at hold_right_witness - 0038
have hsr0 : S r = 0 - 0039
specialize add_eq_zero_right x - 0040
specialize add_eq_zero_right (S r) - 0041
apply add_eq_zero_right - 0042
exact hold_right_witness - 0043
specialize succ_ne_zero r - 0044
apply succ_ne_zero - 0045
exact hsr0 - 0046
have hzero : ∃ q0. ∃ r0. S n = d · q0 + r0 ∧ r0 = 0 ∧ Lt(r0,d)Exact native replay line
have hzero : exists q0 r0. ((S n = d * q0 + r0 /\ r0 = 0) /\ exists gap. gap + S r0 = d) - 0047
specialize multiple_has_zero_remainder d - 0048
specialize multiple_has_zero_remainder (S n) - 0049
apply multiple_has_zero_remainder - 0050
exact hd0 - 0051
exact hbit_left_right - 0052
cases hzero - 0053
cases hzero_witness - 0054
cases hzero_witness_witness - 0055
cases hzero_witness_witness_left - 0056
have hunique : z = x /\ s = x1 - 0057
cases hnew - 0058
specialize division_remainder_unique d - 0059
specialize division_remainder_unique (S n) - 0060
specialize division_remainder_unique z - 0061
specialize division_remainder_unique s - 0062
specialize division_remainder_unique x - 0063
specialize division_remainder_unique x1 - 0064
apply division_remainder_unique - 0065
exact hnew_left - 0066
exact hnew_right - 0067
exact hzero_witness_witness_left_left - 0068
exact hzero_witness_witness_right - 0069
cases hunique - 0070
have hs0 : s = 0 - 0071
trans x1 - 0072
exact hunique_right - 0073
exact hzero_witness_witness_left_right - 0074
exfalso - 0075
specialize succ_ne_zero r - 0076
apply succ_ne_zero - 0077
trans s - 0078
symm - 0079
exact hcases_right_right_right - 0080
exact hs0 - 0081
cases hbit_right - 0082
cases hcases - 0083
cases hcases_left - 0084
cases hcases_left_right - 0085
exfalso - 0086
apply hbit_right_right - 0087
cases hnew - 0088
rewrite hcases_left_right_right at hnew_left - 0089
specialize zero_remainder_implies_multiple d - 0090
specialize zero_remainder_implies_multiple (S n) - 0091
specialize zero_remainder_implies_multiple z - 0092
apply zero_remainder_implies_multiple - 0093
exact hnew_left - 0094
cases hcases_right - 0095
cases hcases_right_right - 0096
rewrite hbit_right_left - 0097
rewrite hcases_right_right_left - 0098
rewrite PA3 - 0099
refl