theorem
proved
tactic proof
mul_eq_zero
show as:
view Lean formalization →
formal statement (Lean)
408theorem mul_eq_zero {a b : LogicInt} : a * b = 0 ↔ a = 0 ∨ b = 0 := by
proof body
Tactic-mode proof.
409 constructor
410 · intro h
411 have hint : toInt a * toInt b = 0 := by
412 rw [← toInt_mul]
413 have := congrArg toInt h
414 rwa [toInt_zero] at this
415 rcases Int.mul_eq_zero.mp hint with ha | hb
416 · left
417 rw [eq_iff_toInt_eq, toInt_zero]; exact ha
418 · right
419 rw [eq_iff_toInt_eq, toInt_zero]; exact hb
420 · rintro (ha | hb)
421 · rw [ha, eq_iff_toInt_eq, toInt_mul, toInt_zero]; ring
422 · rw [hb, eq_iff_toInt_eq, toInt_mul, toInt_zero]; ring
423
424/-- Cancellation: if `c ≠ 0` and `a * c = b * c`, then `a = b`. -/
used by (40)
-
costRateEL_implies_const_one -
costCompose_left_cancel -
J_eq_iff_eq_or_inv -
laplacian_form_zero_imp -
lambda_rec_unique_root -
phi_unique_self_similar -
quadraticHessian_eq_zero_iff -
jcost_energy_zero_iff_ground -
love_changes_individual_sigma -
mismatch_forces_zero -
bilinear_family_forced -
locality_forces_additive_composition -
rcl_direct_theorem -
phi_unique_positive -
closed_ratio_is_phi -
phi_forcing_complete -
additive_closure_golden -
stable_iff_boundary -
add -
mul -
jcost_stationarity_to_regge_nonlinear -
pauli_exclusion -
pauli_exclusion_simple -
modified_falling_condition -
falling_restores_coherence -
Jcost_symmetry_forces_geometric_boundary -
cloning_constraint -
inner_product_constraint -
rep_unique -
minus_one_step_forces_phi_shift