• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
      • Ipasir
        • Ipasir$a
          • Ipasir$a-p
          • Ipasir$a-fix
          • Ipasir-set-limit$a
          • Ipasir-add-lit$a
            • Ipasir-assume$a
            • Ipasir-init$a
            • Make-ipasir$a
            • Ipasir-finalize-clause$a
            • Ipasir-reinit$a
            • Ipasir$a-equiv
            • Ipasir-input$a
            • Ipasir-val$a
            • Ipasir-release$a
            • Ipasir$a->solved-assumption
            • Ipasir$a->new-clause
            • Ipasir$a->callback-count
            • Ipasir$a->assumption
            • Ipasir-failed$a
            • Change-ipasir$a
            • Ipasir$a->solution
            • Ipasir$a->formula
            • Ipasir$a->status
            • Ipasir$a->history
            • Ipasir-callback-count$a
            • Ipasir-solved-assumption$a
            • Ipasir-some-history$a
            • Ipasir-get-status$a
            • Ipasir-get-assumption$a
            • Ipasir-empty-new-clause$a
            • Create-ipasir$a
            • Ipasir-solve$a
          • Building-an-ipasir-solver-library
          • Ipasir-formula
          • Ipasir-bump-activity-vars$a
          • Ipasir-set$a
          • Ipasir-bump-activity-vars$c
          • Ipasir-get$a
          • Ipasir-set-limit$c
          • Ipasir-set$c
          • Ipasir-failed$c
          • Ipasir-assume$c
          • Ipasir-add-lit$c
          • Ipasir-val$c
          • With-local-ipasir
          • Ipasir-solve$c
          • Ipasir-reinit$c
          • Ipasir-init$c
          • Ipasir-finalize-clause$c
          • Ipasir-some-history$c
          • Ipasir-solved-assumption$c
          • Ipasir-release$c
          • Ipasir-input$c
          • Ipasir-get$c
          • Ipasir-get-status$c
          • Ipasir-get-curr-stats$c
          • Ipasir-get-assumption$c
          • Ipasir-empty-new-clause$c
          • Ipasir-callback-count$c
          • Ipasir-val
          • Ipasir-solve
          • Ipasir-set-limit
          • Ipasir-reinit
          • Ipasir-failed
          • Ipasir-callback-count
          • Ipasir-release
          • Ipasir-input
          • Ipasir-init
          • Ipasir-finalize-clause
          • Ipasir-assume
          • Ipasir-add-lit
        • Aignet
        • Aig
        • Satlink
        • Truth
        • Ubdds
        • Bdd
        • Faig
        • Bed
        • 4v
      • Debugging
      • Projects
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Ipasir$a

    Ipasir-add-lit$a

    Logic form of ipasir-add-lit. See ipasir for usage.

    Signature
    (ipasir-add-lit$a solver lit) → new-solver
    Arguments
    solver — Guard (ipasir$a-p solver).
    lit — Guard (litp lit).
    Returns
    new-solver — Type (ipasir$a-p new-solver).

    Definitions and Theorems

    Function: ipasir-add-lit$a

    (defun
     ipasir-add-lit$a (solver lit)
     (declare (xargs :guard (and (ipasir$a-p solver) (litp lit))))
     (declare (xargs :guard (not (eq (ipasir-get-status$a solver)
                                     :undef))))
     (let
      ((__function__ 'ipasir-add-lit$a))
      (declare (ignorable __function__))
      (b*
        (((ipasir$a solver))
         (- (mbe :logic nil
                 :exec (and (not (signed-byte-p 32 lit))
                            (raise "Out of bounds literal: ~x0" lit)))))
        (change-ipasir$a
             solver
             :new-clause (cons (lit-fix lit) solver.new-clause)
             :status :input
             :history (cons (cons ':add (cons (lit-fix lit) 'nil))
                            solver.history)))))

    Theorem: ipasir$a-p-of-ipasir-add-lit$a

    (defthm ipasir$a-p-of-ipasir-add-lit$a
            (b* ((new-solver (ipasir-add-lit$a solver lit)))
                (ipasir$a-p new-solver))
            :rule-classes :rewrite)

    Theorem: status-of-ipasir-add-lit$a

    (defthm status-of-ipasir-add-lit$a
            (b* ((?new-solver (ipasir-add-lit$a solver lit)))
                (equal (ipasir$a->status new-solver)
                       :input)))

    Theorem: new-clause-of-ipasir-add-lit$a

    (defthm new-clause-of-ipasir-add-lit$a
            (b* ((?new-solver (ipasir-add-lit$a solver lit)))
                (equal (ipasir$a->new-clause new-solver)
                       (cons (lit-fix lit)
                             (ipasir$a->new-clause solver)))))

    Theorem: formula-of-ipasir-add-lit$a

    (defthm formula-of-ipasir-add-lit$a
            (b* ((?new-solver (ipasir-add-lit$a solver lit)))
                (equal (ipasir$a->formula new-solver)
                       (ipasir$a->formula solver))))

    Theorem: assumption-of-ipasir-add-lit$a

    (defthm assumption-of-ipasir-add-lit$a
            (b* ((?new-solver (ipasir-add-lit$a solver lit)))
                (equal (ipasir$a->assumption new-solver)
                       (ipasir$a->assumption solver))))

    Theorem: ipasir-add-lit$a-of-ipasir$a-fix-solver

    (defthm ipasir-add-lit$a-of-ipasir$a-fix-solver
            (equal (ipasir-add-lit$a (ipasir$a-fix solver)
                                     lit)
                   (ipasir-add-lit$a solver lit)))

    Theorem: ipasir-add-lit$a-ipasir$a-equiv-congruence-on-solver

    (defthm ipasir-add-lit$a-ipasir$a-equiv-congruence-on-solver
            (implies (ipasir$a-equiv solver solver-equiv)
                     (equal (ipasir-add-lit$a solver lit)
                            (ipasir-add-lit$a solver-equiv lit)))
            :rule-classes :congruence)

    Theorem: ipasir-add-lit$a-of-lit-fix-lit

    (defthm ipasir-add-lit$a-of-lit-fix-lit
            (equal (ipasir-add-lit$a solver (lit-fix lit))
                   (ipasir-add-lit$a solver lit)))

    Theorem: ipasir-add-lit$a-lit-equiv-congruence-on-lit

    (defthm ipasir-add-lit$a-lit-equiv-congruence-on-lit
            (implies (lit-equiv lit lit-equiv)
                     (equal (ipasir-add-lit$a solver lit)
                            (ipasir-add-lit$a solver lit-equiv)))
            :rule-classes :congruence)