Skip to content

Commit e413526

Browse files
committed
chore: remove Entails
1 parent 12b0f11 commit e413526

File tree

6 files changed

+21
-151
lines changed

6 files changed

+21
-151
lines changed

src/Std/Sat.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Henrik Böving
55
-/
66
prelude
7-
import Std.Sat.Basic
87
import Std.Sat.CNF

src/Std/Sat/Basic.lean

Lines changed: 0 additions & 125 deletions
This file was deleted.

src/Std/Sat/CNF/Basic.lean

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace CNF
2929
/--
3030
Evaluating a `Clause` with respect to an assignment `a`.
3131
-/
32-
def Clause.eval (a : α → Bool) (c : Clause α) : Bool := c.any fun (i, n) => a i == n
32+
def Clause.eval (a : α → Bool) (c : Clause α) : Bool := c.any fun l => l.eval a
3333

3434
@[simp] theorem Clause.eval_nil (a : α → Bool) : Clause.eval a [] = false := rfl
3535
@[simp] theorem Clause.eval_cons (a : α → Bool) :
@@ -46,20 +46,21 @@ def eval (a : α → Bool) (f : CNF α) : Bool := f.all fun c => c.eval a
4646
@[simp] theorem eval_append (a : α → Bool) (f1 f2 : CNF α) :
4747
eval a (f1 ++ f2) = (eval a f1 && eval a f2) := List.all_append
4848

49-
instance : Entails α (Clause α) where
50-
eval assign clause := Clause.eval assign clause
49+
def sat (a : α → Bool) (f : CNF α) : Prop := eval a f = true
50+
def unsat (f : CNF α) : Prop := ∀ a, eval a f = false
5151

52-
instance : Entails α (CNF α) where
53-
eval assign cnf := eval assign cnf
52+
theorem sat_def (a : α → Bool) (f : CNF α) : sat a f ↔ (eval a f = true) := by rfl
53+
theorem unsat_def (f : CNF α) : unsat f ↔ (∀ a, eval a f = false) := by rfl
5454

55-
@[simp] theorem not_unsatisfiable_nil : ¬Unsatisfiable α ([] : CNF α) :=
56-
fun h => by simp [Unsatisfiable, (· ⊨ ·)] at h
5755

58-
@[simp] theorem sat_nil {assign : α → Bool} : assign ⊨ ([] : CNF α) := by
59-
simp [(· ⊨ ·)]
56+
@[simp] theorem not_unsatisfiable_nil : ¬unsat ([] : CNF α) :=
57+
fun h => by simp [unsat_def] at h
6058

61-
@[simp] theorem unsat_nil_cons {g : CNF α} : Unsatisfiable α ([] :: g) := by
62-
simp [Unsatisfiable, (· ⊨ ·)]
59+
@[simp] theorem sat_nil {assign : α → Bool} : sat assign ([] : CNF α) := by
60+
simp [sat_def]
61+
62+
@[simp] theorem unsat_nil_cons {g : CNF α} : unsat ([] :: g) := by
63+
simp [unsat_def]
6364

6465
namespace Clause
6566

src/Std/Sat/CNF/Literal.lean

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Authors: Josh Clune
66
prelude
77
import Init.Data.Hashable
88
import Init.Data.ToString
9-
import Std.Sat.Basic
109

1110
namespace Std
1211
namespace Sat
@@ -20,11 +19,7 @@ abbrev Literal (α : Type u) := α × Bool
2019
namespace Literal
2120
variable (α : Type) [Hashable α]
2221

23-
instance : Entails α (Literal α) where
24-
eval := fun p l => p l.1 = l.2
25-
26-
instance (p : α → Bool) (l : Literal α) : Decidable (p ⊨ l) :=
27-
inferInstanceAs (Decidable (p l.1 = l.2))
22+
def eval (a : α → Bool) (l : Literal α) : Bool := a l.1 = l.2
2823

2924
/--
3025
Flip the polarity of `l`.

src/Std/Sat/CNF/Relabel.lean

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ theorem relabel_congr {f : CNF α} {r1 r2 : α → β} (hw : ∀ v, Mem v f →
7676
intro v m
7777
exact hw _ (mem_of h m)
7878

79-
theorem sat_relabel {f : CNF α} (h : (r1 ∘ r2) f) : r1 ⊨ (relabel r2 f) := by
80-
simp_all [(· ⊨ ·)]
79+
theorem sat_relabel {f : CNF α} (h : sat (r1 ∘ r2) f) : sat r1 (relabel r2 f) := by
80+
simp_all [sat_def]
8181

82-
theorem unsat_relabel {f : CNF α} (r : α → β) (h : Unsatisfiable α f) :
83-
Unsatisfiable β (relabel r f) := by
84-
simp_all [Unsatisfiable, (· ⊨ ·)]
82+
theorem unsat_relabel {f : CNF α} (r : α → β) (h : unsat f) :
83+
unsat (relabel r f) := by
84+
simp_all [unsat_def]
8585

8686
theorem nonempty_or_impossible (f : CNF α) : Nonempty α ∨ ∃ n, f = List.replicate n [] := by
8787
induction f with
@@ -97,7 +97,7 @@ theorem nonempty_or_impossible (f : CNF α) : Nonempty α ∨ ∃ n, f = List.re
9797

9898
theorem unsat_relabel_iff {f : CNF α} {r : α → β}
9999
(hw : ∀ {v1 v2}, Mem v1 f → Mem v2 f → r v1 = r v2 → v1 = v2) :
100-
Unsatisfiable β (relabel r f) ↔ Unsatisfiable α f := by
100+
unsat (relabel r f) ↔ unsat f := by
101101
rcases nonempty_or_impossible f with (⟨⟨a₀⟩⟩ | ⟨n, rfl⟩)
102102
· refine ⟨fun h => ?_, unsat_relabel r⟩
103103
have em := Classical.propDecidable
@@ -115,7 +115,7 @@ theorem unsat_relabel_iff {f : CNF α} {r : α → β}
115115
· exact (Exists.choose_spec (⟨v, h, rfl⟩ : ∃ a', Mem a' f ∧ r a' = r v)).1
116116
rw [relabel_relabel, relabel_congr, relabel_id]
117117
exact this
118-
· cases n <;> simp [Unsatisfiable, (· ⊨ ·), List.replicate_succ]
118+
· cases n <;> simp [unsat_def, List.replicate_succ]
119119

120120
end CNF
121121

src/Std/Sat/CNF/RelabelFin.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def relabelFin (f : CNF Nat) : CNF (Fin f.numLiterals) :=
114114
List.replicate f.length []
115115

116116
theorem unsat_relabelFin {f : CNF Nat} :
117-
Unsatisfiable (Fin f.numLiterals) f.relabelFin ↔ Unsatisfiable Nat f := by
117+
unsat f.relabelFin ↔ unsat f := by
118118
dsimp [relabelFin]
119119
split <;> rename_i h
120120
· apply unsat_relabel_iff

0 commit comments

Comments
 (0)