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.
G101 was OPEN when this family was first admitted in Alpha v21. It is now CLOSED in Alpha v23: the actual anchored Euclidean history, terminal gcd, and exact bound steps≤2*BitLen(b)+1 are proved.
Exact theorem in conservative defined notation
∀ a. ∀ b. ∀ q. ∀ r. ∀ Q. ∀ t. EuclideanDivision(a,b,q,r) → EuclideanDivision(b,r,Q,t) → EuclideanHalving(b,t)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete unchanged native tactic proof
All 49 lines are the exact independently kernel-checked original 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
02Establish hqL9–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euclidean two step quotient nonzero.
- L9
have hq : ~(Q = 0) - L10
specialize euclidean_two_step_quotient_nonzero a - L11
specialize euclidean_two_step_quotient_nonzero b - L12
specialize euclidean_two_step_quotient_nonzero q - L13
specialize euclidean_two_step_quotient_nonzero r - L14
specialize euclidean_two_step_quotient_nonzero Q - L15
specialize euclidean_two_step_quotient_nonzero t - L16
intro hzero - L17
apply euclidean_two_step_quotient_nonzero - L18
exact hfirst
03Use earlier factsL19–20
04Separate the logical casesL21–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
cases hsecond
05Establish honeL22–25
06Establish hproductL26–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le mul of one le right.
07Establish hsumL31–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add le add right.
08Establish hstrictL37–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euclidean add right preserves lt.
- L37
have hstrict : exists gap. gap + S (t + t) = r + t - L38
specialize euclidean_add_right_preserves_lt t - L39
specialize euclidean_add_right_preserves_lt r - L40
specialize euclidean_add_right_preserves_lt t - L41
apply euclidean_add_right_preserves_lt - L42
exact hsecond_right - L43
specialize lt_of_lt_of_le (t + t) - L44
specialize lt_of_lt_of_le (r + t) - L45
specialize lt_of_lt_of_le b - L46
apply lt_of_lt_of_le
09Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
exact hstrict
10Calculate and transport equalitiesL48–48
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L48
rewrite hsecond_left
11Use earlier factsL49–49
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L49
exact hsum
Original defined command ledger · 49 lines
- 0001
intro a - 0002
intro b - 0003
intro q - 0004
intro r - 0005
intro Q - 0006
intro t - 0007
intro hfirst - 0008
intro hsecond - 0009
have hq : ~(Q = 0) - 0010
specialize euclidean_two_step_quotient_nonzero a - 0011
specialize euclidean_two_step_quotient_nonzero b - 0012
specialize euclidean_two_step_quotient_nonzero q - 0013
specialize euclidean_two_step_quotient_nonzero r - 0014
specialize euclidean_two_step_quotient_nonzero Q - 0015
specialize euclidean_two_step_quotient_nonzero t - 0016
intro hzero - 0017
apply euclidean_two_step_quotient_nonzero - 0018
exact hfirst - 0019
exact hsecond - 0020
exact hzero - 0021
cases hsecond - 0022
have hone : exists gap. gap + 1 = Q - 0023
specialize one_le_of_ne_zero Q - 0024
apply one_le_of_ne_zero - 0025
exact hq - 0026
have hproduct : exists gap. gap + r = r * Q - 0027
specialize le_mul_of_one_le_right r - 0028
specialize le_mul_of_one_le_right Q - 0029
apply le_mul_of_one_le_right - 0030
exact hone - 0031
have hsum : exists gap. gap + (r + t) = r * Q + t - 0032
specialize add_le_add_right r - 0033
specialize add_le_add_right (r * Q) - 0034
specialize add_le_add_right t - 0035
apply add_le_add_right - 0036
exact hproduct - 0037
have hstrict : exists gap. gap + S (t + t) = r + t - 0038
specialize euclidean_add_right_preserves_lt t - 0039
specialize euclidean_add_right_preserves_lt r - 0040
specialize euclidean_add_right_preserves_lt t - 0041
apply euclidean_add_right_preserves_lt - 0042
exact hsecond_right - 0043
specialize lt_of_lt_of_le (t + t) - 0044
specialize lt_of_lt_of_le (r + t) - 0045
specialize lt_of_lt_of_le b - 0046
apply lt_of_lt_of_le - 0047
exact hstrict - 0048
rewrite hsecond_left - 0049
exact hsum