Exact expanded 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 + bitStructural proof guide
A divisibility bit is exactly the successor quotient increment.
Direct prerequisites: division_remainder_successor_cases, add_eq_zero_right, succ_ne_zero, multiple_has_zero_remainder, division_remainder_unique, zero_remainder_implies_multiple. The authored body proceeds by case analysis (22), intermediate claims (6), equality transport (9).
Proof neighborhood
Direct dependencies
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 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 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)) \/ ((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 : 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