Theorem: LO.FirstOrder.Rew.eq_neg_iff (Logic/FirstOrder/Basic/Syntax/Rew.lean)

State before:
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ ω.hom p = q₁ ⟶ q₂ ↔ ∃ p₁ p₂, ω.hom p₁ = q₁ ∧ ω.hom p₂ = q₂ ∧ p = p₁ ⟶ p₂
Tactic:
simp[imp_eq]
State after:
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ (∃ p₁, ω.hom p₁ = ~q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = p₁ ⋎ x) ↔ ∃ p₁, ω.hom p₁ = q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = ~p₁ ⋎ x

State before:
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ (∃ p₁, ω.hom p₁ = ~q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = p₁ ⋎ x) ↔ ∃ p₁, ω.hom p₁ = q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = ~p₁ ⋎ x
Tactic:
constructor
State after:
case mp
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ (∃ p₁, ω.hom p₁ = ~q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = p₁ ⋎ x) → ∃ p₁, ω.hom p₁ = q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = ~p₁ ⋎ x

case mpr
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ (∃ p₁, ω.hom p₁ = q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = ~p₁ ⋎ x) → ∃ p₁, ω.hom p₁ = ~q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = p₁ ⋎ x

State before:
case mp
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ (∃ p₁, ω.hom p₁ = ~q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = p₁ ⋎ x) → ∃ p₁, ω.hom p₁ = q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = ~p₁ ⋎ x
Tactic:
rintro ⟨p₁, hp₁, q₂, rfl, rfl⟩
State after:
case mp.intro.intro.intro.intro
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
q₁ : Semiformula L ξ₂ n₂
p₁ : Semiformula L ξ₁ n₁
hp₁ : ω.hom p₁ = ~q₁
q₂ : Semiformula L ξ₁ n₁
⊢ ∃ p₁_1, ω.hom p₁_1 = q₁ ∧ ∃ x, ω.hom x = ω.hom q₂ ∧ p₁ ⋎ q₂ = ~p₁_1 ⋎ x

State before:
case mp.intro.intro.intro.intro
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
q₁ : Semiformula L ξ₂ n₂
p₁ : Semiformula L ξ₁ n₁
hp₁ : ω.hom p₁ = ~q₁
q₂ : Semiformula L ξ₁ n₁
⊢ ∃ p₁_1, ω.hom p₁_1 = q₁ ∧ ∃ x, ω.hom x = ω.hom q₂ ∧ p₁ ⋎ q₂ = ~p₁_1 ⋎ x
Tactic:
exact ⟨~p₁, by simp[hp₁]⟩
State after:
no goals

State before:
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
q₁ : Semiformula L ξ₂ n₂
p₁ : Semiformula L ξ₁ n₁
hp₁ : ω.hom p₁ = ~q₁
q₂ : Semiformula L ξ₁ n₁
⊢ ω.hom (~p₁) = q₁ ∧ ∃ x, ω.hom x = ω.hom q₂ ∧ p₁ ⋎ q₂ = ~~p₁ ⋎ x
Tactic:
simp[hp₁]
State after:
no goals

State before:
case mpr
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p : Semiformula L ξ₁ n₁
q₁ q₂ : Semiformula L ξ₂ n₂
⊢ (∃ p₁, ω.hom p₁ = q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = ~p₁ ⋎ x) → ∃ p₁, ω.hom p₁ = ~q₁ ∧ ∃ x, ω.hom x = q₂ ∧ p = p₁ ⋎ x
Tactic:
rintro ⟨p₁, rfl, p₂, rfl, rfl⟩
State after:
case mpr.intro.intro.intro.intro
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p₁ p₂ : Semiformula L ξ₁ n₁
⊢ ∃ p₁_1, ω.hom p₁_1 = ~ω.hom p₁ ∧ ∃ x, ω.hom x = ω.hom p₂ ∧ ~p₁ ⋎ p₂ = p₁_1 ⋎ x

State before:
case mpr.intro.intro.intro.intro
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p₁ p₂ : Semiformula L ξ₁ n₁
⊢ ∃ p₁_1, ω.hom p₁_1 = ~ω.hom p₁ ∧ ∃ x, ω.hom x = ω.hom p₂ ∧ ~p₁ ⋎ p₂ = p₁_1 ⋎ x
Tactic:
exact ⟨~p₁, by simp, p₂, by simp⟩
State after:
no goals

State before:
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p₁ p₂ : Semiformula L ξ₁ n₁
⊢ ω.hom (~p₁) = ~ω.hom p₁
Tactic:
simp
State after:
no goals

State before:
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ₁ : Type u_2
ξ₂ : Type u_3
ξ₃ : Type u_4
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
ω : Rew L ξ₁ n₁ ξ₂ n₂
p₁ p₂ : Semiformula L ξ₁ n₁
⊢ ω.hom p₂ = ω.hom p₂ ∧ ~p₁ ⋎ p₂ = ~p₁ ⋎ p₂
Tactic:
simp
State after:
no goals