@[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 (a ≤* a_1) = ¬* (a ≤* a_1)
- omega.nat.push_neg (a =* a_1) = ¬* (a =* a_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 (a ≤* a_1) = (a ≤* a_1)
- omega.nat.nnf (a =* a_1) = (a =* a_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 (¬* (a ∧* a_1)) = false
- omega.nat.is_nnf (¬* (a ∨* a_1)) = false
- omega.nat.is_nnf (¬* ¬* a) = 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 (¬* (a ∧* a_1)) = ¬* (a ∧* a_1)
- omega.nat.neg_elim_core (¬* (a ∨* a_1)) = ¬* (a ∨* a_1)
- omega.nat.neg_elim_core (¬* ¬* a) = ¬* ¬* a
- 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 (a ≤* a_1) = (a ≤* a_1)
- omega.nat.neg_elim_core (a =* a_1) = (a =* a_1)
Eliminate all negations in a preform