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
∀ n. ∀ c. ∀ d. ∀ q. ∀ r. Le(2 · c,q) → S n · d = 2 · S (n + n) · c → r = q · 4 → Le(2 · d,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
2 occurrences
In local proof propositions
4 occurrences
Exact expanded native-PA statement
forall n c d q r. (exists bcf_le_gap_bcbsus_source. bcf_le_gap_bcbsus_source + (2 * c) = q) -> S n * d = (2 * S (n + n)) * c -> r = q * 4 -> (exists bcf_le_gap_bcbsus_result. bcf_le_gap_bcbsus_result + (2 * d) = r)Proof neighborhood
Direct theorem prerequisites
BT0000 zero_add BT0001 add_succ_left BT0003 add_assoc BT0006 mul_comm BT0008 mul_assoc BT00QU two_mul_eq_add_self BT001L mul_le_mul_left BT001M mul_le_mul_right BT000F le_trans BT000C succ_ne_zero BT00RD mul_le_cancel_left_nonzeroDirect 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 (11)
01Fix variables and assumptionsL1–8
02Establish hsource_scaledL9–14
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul left.
- L9
have hsource_scaled : Le(S (n + n) · (2 · c),S (n + n) · q)Definitions: Le(S (n + n) · (2 · c),S (n + n) · q)Original native command in the exact edition - L10
specialize mul_le_mul_left (2 * c) - L11
specialize mul_le_mul_left q - L12
specialize mul_le_mul_left (S (n + n)) - L13
apply mul_le_mul_left - L14
exact hsource
03Establish hcombinedL15–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
- L15
have hcombined : Le(S (n + n) · (2 · c),2 · S n · q)Definitions: Le(S (n + n) · (2 · c),2 · S n · q)Original native command in the exact edition - L16
specialize le_trans (S (n + n) * (2 * c)) - L17
specialize le_trans (S (n + n) * q) - L18
specialize le_trans ((2 * S n) * q) - L19
apply le_trans - L20
exact hsource_scaled - L21
specialize mul_le_mul_right (S (n + n)) - L22
specialize mul_le_mul_right (2 * S n) - L23
specialize mul_le_mul_right q - L24
apply mul_le_mul_right
04Construct an explicit witnessL25–25
Supply the displayed value, then prove that it has the required property.
- L25
exists 1
05Use earlier factsL26–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
specialize two_mul_eq_add_self (S n)
06Calculate and transport equalitiesL27–29
07Use earlier factsL30–32
08Calculate and transport equalitiesL33–33
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L33
rewrite <- add_assoc
09Use earlier factsL34–35
10Calculate and transport equalitiesL36–36
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L36
rewrite add_succ_left
11Use earlier factsL37–37
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
specialize zero_add n
12Calculate and transport equalitiesL38–39
13Establish hleft_alignL40–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul assoc.
14Establish hcomm_c_twoL47–50
15Establish hrecurrence_alignedL51–54
16Establish hright_alignL55–61
17Establish hcomm_q_twoL62–67
18Establish hhalfL68–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le cancel left nonzero.
19Establish hdoubleL76–81
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul left.
- L76
have hdouble : Le(2 · d,2 · (2 · q))Definitions: Le(2 · d,2 · (2 · q))Original native command in the exact edition - L77
specialize mul_le_mul_left d - L78
specialize mul_le_mul_left (2 * q) - L79
specialize mul_le_mul_left 2 - L80
apply mul_le_mul_left - L81
exact hhalf
20Establish hfourL82–86
Original defined command ledger · 94 lines
- 0001
intro n - 0002
intro c - 0003
intro d - 0004
intro q - 0005
intro r - 0006
intro hsource - 0007
intro hrecurrence - 0008
intro hpower_step - 0009
have hsource_scaled : Le(S (n + n) · (2 · c),S (n + n) · q)Exact native replay line
have hsource_scaled : exists k. k + S (n + n) * (2 * c) = S (n + n) * q - 0010
specialize mul_le_mul_left (2 * c) - 0011
specialize mul_le_mul_left q - 0012
specialize mul_le_mul_left (S (n + n)) - 0013
apply mul_le_mul_left - 0014
exact hsource - 0015
have hcombined : Le(S (n + n) · (2 · c),2 · S n · q)Exact native replay line
have hcombined : exists k. k + S (n + n) * (2 * c) = (2 * S n) * q - 0016
specialize le_trans (S (n + n) * (2 * c)) - 0017
specialize le_trans (S (n + n) * q) - 0018
specialize le_trans ((2 * S n) * q) - 0019
apply le_trans - 0020
exact hsource_scaled - 0021
specialize mul_le_mul_right (S (n + n)) - 0022
specialize mul_le_mul_right (2 * S n) - 0023
specialize mul_le_mul_right q - 0024
apply mul_le_mul_right - 0025
exists 1 - 0026
specialize two_mul_eq_add_self (S n) - 0027
rewrite two_mul_eq_add_self - 0028
rewrite PA4 - 0029
rewrite PA4 - 0030
specialize add_assoc 1 - 0031
specialize add_assoc n - 0032
specialize add_assoc n - 0033
rewrite <- add_assoc - 0034
specialize add_succ_left 0 - 0035
specialize add_succ_left n - 0036
rewrite add_succ_left - 0037
specialize zero_add n - 0038
rewrite zero_add - 0039
refl - 0040
have hleft_align : (2 * S (n + n)) * c = S (n + n) * (2 * c) - 0041
trans 2 * (S (n + n) * c) - 0042
apply mul_assoc - 0043
trans (S (n + n) * c) * 2 - 0044
apply mul_comm - 0045
trans S (n + n) * (c * 2) - 0046
apply mul_assoc - 0047
have hcomm_c_two : c * 2 = 2 * c - 0048
apply mul_comm - 0049
rewrite hcomm_c_two - 0050
refl - 0051
have hrecurrence_aligned : S n * d = S (n + n) * (2 * c) - 0052
trans (2 * S (n + n)) * c - 0053
exact hrecurrence - 0054
exact hleft_align - 0055
have hright_align : (2 * S n) * q = S n * (2 * q) - 0056
trans 2 * (S n * q) - 0057
apply mul_assoc - 0058
trans (S n * q) * 2 - 0059
apply mul_comm - 0060
trans S n * (q * 2) - 0061
apply mul_assoc - 0062
have hcomm_q_two : q * 2 = 2 * q - 0063
apply mul_comm - 0064
rewrite hcomm_q_two - 0065
refl - 0066
rewrite <- hrecurrence_aligned at hcombined - 0067
rewrite hright_align at hcombined - 0068
have hhalf : Le(d,2 · q)Exact native replay line
have hhalf : exists k. k + d = 2 * q - 0069
specialize mul_le_cancel_left_nonzero (S n) - 0070
specialize mul_le_cancel_left_nonzero d - 0071
specialize mul_le_cancel_left_nonzero (2 * q) - 0072
apply mul_le_cancel_left_nonzero - 0073
specialize succ_ne_zero n - 0074
exact succ_ne_zero - 0075
exact hcombined - 0076
have hdouble : Le(2 · d,2 · (2 · q))Exact native replay line
have hdouble : exists k. k + 2 * d = 2 * (2 * q) - 0077
specialize mul_le_mul_left d - 0078
specialize mul_le_mul_left (2 * q) - 0079
specialize mul_le_mul_left 2 - 0080
apply mul_le_mul_left - 0081
exact hhalf - 0082
have hfour : 2 * (2 * q) = q * 4 - 0083
trans (2 * 2) * q - 0084
symm - 0085
apply mul_assoc - 0086
trans 4 * q - 0087
have htwo_two : 2 * 2 = 4 - 0088
norm_num - 0089
rewrite htwo_two - 0090
refl - 0091
apply mul_comm - 0092
rewrite hfour at hdouble - 0093
rewrite hpower_step - 0094
exact hdouble