@[simp]
push_neg p returns the result of normalizing ¬ p by pushing the outermost negation all the way down, until it reaches either a negation or an atom
Equations
- omega.nat.push_neg (p ∧* q) = (omega.nat.push_neg p ∨* omega.nat.push_neg q)
- omega.nat.push_neg (p ∨* q) = (omega.nat.push_neg p ∧* omega.nat.push_neg q)
- omega.nat.push_neg (¬* p) = p
- omega.nat.push_neg (ᾰ ≤* ᾰ_1) = ¬* (ᾰ ≤* ᾰ_1)
- omega.nat.push_neg (ᾰ =* ᾰ_1) = ¬* (ᾰ =* ᾰ_1)
NNF transformation
Equations
- omega.nat.nnf (p ∧* q) = (omega.nat.nnf p ∧* omega.nat.nnf q)
- omega.nat.nnf (p ∨* q) = (omega.nat.nnf p ∨* omega.nat.nnf q)
- omega.nat.nnf (¬* p) = omega.nat.push_neg (omega.nat.nnf p)
- omega.nat.nnf (ᾰ ≤* ᾰ_1) = (ᾰ ≤* ᾰ_1)
- omega.nat.nnf (ᾰ =* ᾰ_1) = (ᾰ =* ᾰ_1)
Asserts that the given preform is in NNF
Equations
- omega.nat.is_nnf (p ∧* q) = (omega.nat.is_nnf p ∧ omega.nat.is_nnf q)
- omega.nat.is_nnf (p ∨* q) = (omega.nat.is_nnf p ∧ omega.nat.is_nnf q)
- omega.nat.is_nnf (¬* (ᾰ ∧* ᾰ_1)) = false
- omega.nat.is_nnf (¬* (ᾰ ∨* ᾰ_1)) = false
- omega.nat.is_nnf (¬* ¬* ᾰ) = false
- omega.nat.is_nnf (¬* (t ≤* s)) = true
- omega.nat.is_nnf (¬* (t =* s)) = true
- omega.nat.is_nnf (t ≤* s) = true
- omega.nat.is_nnf (t =* s) = true
@[simp]
Equations
- omega.nat.neg_elim_core (p ∧* q) = (omega.nat.neg_elim_core p ∧* omega.nat.neg_elim_core q)
- omega.nat.neg_elim_core (p ∨* q) = (omega.nat.neg_elim_core p ∨* omega.nat.neg_elim_core q)
- omega.nat.neg_elim_core (¬* (ᾰ ∧* ᾰ_1)) = ¬* (ᾰ ∧* ᾰ_1)
- omega.nat.neg_elim_core (¬* (ᾰ ∨* ᾰ_1)) = ¬* (ᾰ ∨* ᾰ_1)
- omega.nat.neg_elim_core (¬* ¬* ᾰ) = ¬* ¬* ᾰ
- omega.nat.neg_elim_core (¬* (t ≤* s)) = (s.add_one ≤* t)
- omega.nat.neg_elim_core (¬* (t =* s)) = (t.add_one ≤* s ∨* (s.add_one ≤* t))
- omega.nat.neg_elim_core (ᾰ ≤* ᾰ_1) = (ᾰ ≤* ᾰ_1)
- omega.nat.neg_elim_core (ᾰ =* ᾰ_1) = (ᾰ =* ᾰ_1)
Eliminate all negations in a preform