Exact expanded 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)Structural proof guide
The weighted recurrence preserves the strong factor-two bound.
Direct prerequisites: zero_add, add_succ_left, add_assoc, mul_comm, mul_assoc, two_mul_eq_add_self, mul_le_mul_left, mul_le_mul_right, le_trans, succ_ne_zero, mul_le_cancel_left_nonzero. The authored body proceeds by intermediate claims (11), equality transport (13), closed numeral normalization (1).
Proof neighborhood
Direct dependencies
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 dependents
Formal native tactic body
Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 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 : 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 : 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 : 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 : 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