Filtering...

satisfiable-add-proof-clause

books/projects/sat/lrat/list-based/satisfiable-add-proof-clause
other
(in-package "LRAT")
other
(include-book "lrat-checker")
other
(local (encapsulate nil
    (local (include-book "satisfiable-add-proof-clause-rup"))
    (local (include-book "satisfiable-add-proof-clause-drat"))
    (set-enforce-redundancy t)
    (defthm satisfiable-add-proof-clause-rup
      (mv-let (ncls ndel new-formula)
        (verify-clause formula
          entry
          ncls
          ndel)
        (declare (ignore ncls ndel))
        (implies (and (proof-entry-p entry)
            (formula-p formula)
            (satisfiable formula)
            (equal (unit-propagation formula
                (access add-step entry :rup-indices)
                (negate-clause-or-assignment (access add-step entry :clause)))
              t))
          (satisfiable (add-proof-clause (access add-step entry :index)
              (access add-step entry :clause)
              new-formula))))
      :rule-classes nil)
    (defthm satisfiable-add-proof-clause-drat
      (mv-let (ncls ndel new-formula)
        (verify-clause formula
          entry
          ncls
          ndel)
        (declare (ignore ndel))
        (implies (and ncls
            (proof-entry-p entry)
            (not (proof-entry-deletion-p entry))
            (formula-p formula)
            (satisfiable formula)
            (not (equal (unit-propagation formula
                  (access add-step entry :rup-indices)
                  (negate-clause-or-assignment (access add-step entry :clause)))
                t))
            (consp (access add-step entry :clause)))
          (satisfiable (add-proof-clause (access add-step entry :index)
              (access add-step entry :clause)
              new-formula))))
      :rule-classes nil)))
other
(defthm satisfiable-add-proof-clause
  (mv-let (ncls ndel new-formula)
    (verify-clause formula
      entry
      ncls
      ndel)
    (declare (ignore ndel))
    (implies (and ncls
        (proof-entry-p entry)
        (not (proof-entry-deletion-p entry))
        (formula-p formula)
        (satisfiable formula))
      (satisfiable (add-proof-clause (access add-step entry :index)
          (access add-step entry :clause)
          new-formula))))
  :hints (("Goal" :use (satisfiable-add-proof-clause-rup satisfiable-add-proof-clause-drat)
     :in-theory (union-theories '(verify-clause)
       (theory 'minimal-theory)))))