Theorem: LRAT.Formula.limplies_of_insert (LeanSAT/LRAT/CNF.lean)

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
⊢ limplies α (insert f c) f
Tactic:
intro p
State after:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
⊢ p ⊨ insert f c → p ⊨ f

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
⊢ p ⊨ insert f c → p ⊨ f
Tactic:
simp only [formulaHSat_def, List.all_eq_true, decide_eq_true_eq]
State after:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
⊢ (∀ (x : β), x ∈ toList (insert f c) → p ⊨ x) → ∀ (x : β), x ∈ toList f → p ⊨ x

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
⊢ (∀ (x : β), x ∈ toList (insert f c) → p ⊨ x) → ∀ (x : β), x ∈ toList f → p ⊨ x
Tactic:
intro h c' c'_in_f
State after:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
⊢ p ⊨ c'

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
⊢ p ⊨ c'
Tactic:
have c'_in_fc : c' ∈ toList (insert f c) := by
  simp only [insert_iff, Array.toList_eq, Array.data_toArray, List.mem_singleton]
  exact Or.inr c'_in_f
State after:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
c'_in_fc : c' ∈ toList (insert f c)
⊢ p ⊨ c'

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
c'_in_fc : c' ∈ toList (insert f c)
⊢ p ⊨ c'
Tactic:
exact h c' c'_in_fc
State after:
no goals

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
⊢ c' ∈ toList (insert f c)
Tactic:
simp only [insert_iff, Array.toList_eq, Array.data_toArray, List.mem_singleton]
State after:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
⊢ c' = c ∨ c' ∈ toList f

State before:
α : Type u_1
β : Type u_2
σ : Type u_3
inst✝¹ : Clause α β
inst✝ : Formula α β σ
c : β
f : σ
p : α → Bool
h : ∀ (x : β), x ∈ toList (insert f c) → p ⊨ x
c' : β
c'_in_f : c' ∈ toList f
⊢ c' = c ∨ c' ∈ toList f
Tactic:
exact Or.inr c'_in_f
State after:
no goals