Theorem: LO.FirstOrder.Arith.Model.mem_bitRemove_iff (Arithmetization/ISigmaOne/Bit.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i j a : M
⊢ i ∈ bitRemove j a ↔ i ≠ j ∧ i ∈ a
Tactic:
by_cases h : j ∈ a <;> simp [h, bitRemove]
State after:
case pos
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i j a : M
h : j ∈ a
⊢ i ∈ a - exp j ↔ ¬i = j ∧ i ∈ a

case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i j a : M
h : j ∉ a
⊢ i ∈ a → ¬i = j

State before:
case pos
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i j a : M
h : j ∈ a
⊢ i ∈ a - exp j ↔ ¬i = j ∧ i ∈ a
Tactic:
simpa [exp_inj.eq_iff] using
  lenbit_sub_pow2_iff_of_lenbit (exp_pow2 i) (exp_pow2 j) h
State after:
no goals

State before:
case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i j a : M
h : j ∉ a
⊢ i ∈ a → ¬i = j
Tactic:
rintro _ rfl
State after:
case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i a : M
a✝ : i ∈ a
h : i ∉ a
⊢ False

State before:
case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
i a : M
a✝ : i ∈ a
h : i ∉ a
⊢ False
Tactic:
contradiction
State after:
no goals