Exact expanded PA statement
forall a b. (exists x. b = a * x) -> (exists y. a = b * y) -> a = bStructural proof guide
Mutual divisibility is antisymmetric over natural numbers.
Direct prerequisites: zero_or_succ, mul_zero_left, mul_assoc, mul_one, mul_left_cancel_nonzero, mul_eq_one_components. The authored body proceeds by case analysis (5), intermediate claims (4), equality transport (5).
Proof neighborhood
Direct dependencies
BT000Q zero_or_succ BT0004 mul_zero_left BT0008 mul_assoc BT000A mul_one BT0022 mul_left_cancel_nonzero BT0020 mul_eq_one_componentsDirect 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 a - 0002
intro b - 0003
intro hab - 0004
intro hba - 0005
cases hab - 0006
cases hba - 0007
specialize zero_or_succ a - 0008
cases zero_or_succ - 0009
rewrite zero_or_succ_left - 0010
rewrite zero_or_succ_left at hab_witness - 0011
specialize mul_zero_left x - 0012
rewrite mul_zero_left at hab_witness - 0013
symm - 0014
exact hab_witness - 0015
cases zero_or_succ_right - 0016
have ha : ~(a = 0) - 0017
intro ha0 - 0018
rewrite zero_or_succ_right_witness at ha0 - 0019
apply PA1 - 0020
exact ha0 - 0021
have hcycle : a = a * (x * x1) - 0022
trans b * x1 - 0023
exact hba_witness - 0024
trans (a * x) * x1 - 0025
congr - 0026
exact hab_witness - 0027
refl - 0028
apply mul_assoc - 0029
specialize mul_left_cancel_nonzero a - 0030
specialize mul_left_cancel_nonzero 1 - 0031
specialize mul_left_cancel_nonzero (x * x1) - 0032
have hunit : 1 = x * x1 - 0033
apply mul_left_cancel_nonzero - 0034
exact ha - 0035
specialize mul_one a - 0036
trans a - 0037
apply mul_one - 0038
exact hcycle - 0039
specialize mul_eq_one_components x - 0040
specialize mul_eq_one_components x1 - 0041
have hparts : x = 1 /\ x1 = 1 - 0042
apply mul_eq_one_components - 0043
symm - 0044
exact hunit - 0045
cases hparts - 0046
symm - 0047
trans a * x - 0048
exact hab_witness - 0049
rewrite hparts_left - 0050
apply mul_one