• 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
      • Projects
      • Debugging
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Ipasir$a

    Ipasir$a-fix

    Fixing function for ipasir$a structures.

    Signature
    (ipasir$a-fix x) → new-x
    Arguments
    x — Guard (ipasir$a-p x).
    Returns
    new-x — Type (ipasir$a-p new-x).

    Definitions and Theorems

    Function: ipasir$a-fix$inline

    (defun
     ipasir$a-fix$inline (x)
     (declare (xargs :guard (ipasir$a-p x)))
     (let
      ((__function__ 'ipasir$a-fix))
      (declare (ignorable __function__))
      (mbe
         :logic
         (b* ((formula (lit-list-list-fix (cdr (std::da-nth 0 x))))
              (assumption (lit-list-fix (cdr (std::da-nth 1 x))))
              (new-clause (lit-list-fix (cdr (std::da-nth 2 x))))
              (status (ipasir-status-fix (cdr (std::da-nth 3 x))))
              (solution (lit-list-fix (cdr (std::da-nth 4 x))))
              (solved-assumption (lit-list-fix (cdr (std::da-nth 5 x))))
              (callback-count (nfix (cdr (std::da-nth 6 x))))
              (history (cdr (std::da-nth 7 x))))
             (list (cons 'formula formula)
                   (cons 'assumption assumption)
                   (cons 'new-clause new-clause)
                   (cons 'status status)
                   (cons 'solution solution)
                   (cons 'solved-assumption
                         solved-assumption)
                   (cons 'callback-count callback-count)
                   (cons 'history history)))
         :exec x)))

    Theorem: ipasir$a-p-of-ipasir$a-fix

    (defthm ipasir$a-p-of-ipasir$a-fix
            (b* ((new-x (ipasir$a-fix$inline x)))
                (ipasir$a-p new-x))
            :rule-classes :rewrite)

    Theorem: ipasir$a-fix-when-ipasir$a-p

    (defthm ipasir$a-fix-when-ipasir$a-p
            (implies (ipasir$a-p x)
                     (equal (ipasir$a-fix x) x)))

    Function: ipasir$a-equiv$inline

    (defun ipasir$a-equiv$inline (acl2::x acl2::y)
           (declare (xargs :guard (and (ipasir$a-p acl2::x)
                                       (ipasir$a-p acl2::y))))
           (equal (ipasir$a-fix acl2::x)
                  (ipasir$a-fix acl2::y)))

    Theorem: ipasir$a-equiv-is-an-equivalence

    (defthm ipasir$a-equiv-is-an-equivalence
            (and (booleanp (ipasir$a-equiv x y))
                 (ipasir$a-equiv x x)
                 (implies (ipasir$a-equiv x y)
                          (ipasir$a-equiv y x))
                 (implies (and (ipasir$a-equiv x y)
                               (ipasir$a-equiv y z))
                          (ipasir$a-equiv x z)))
            :rule-classes (:equivalence))

    Theorem: ipasir$a-equiv-implies-equal-ipasir$a-fix-1

    (defthm ipasir$a-equiv-implies-equal-ipasir$a-fix-1
            (implies (ipasir$a-equiv acl2::x x-equiv)
                     (equal (ipasir$a-fix acl2::x)
                            (ipasir$a-fix x-equiv)))
            :rule-classes (:congruence))

    Theorem: ipasir$a-fix-under-ipasir$a-equiv

    (defthm ipasir$a-fix-under-ipasir$a-equiv
            (ipasir$a-equiv (ipasir$a-fix acl2::x)
                            acl2::x)
            :rule-classes (:rewrite :rewrite-quoted-constant))

    Theorem: equal-of-ipasir$a-fix-1-forward-to-ipasir$a-equiv

    (defthm equal-of-ipasir$a-fix-1-forward-to-ipasir$a-equiv
            (implies (equal (ipasir$a-fix acl2::x) acl2::y)
                     (ipasir$a-equiv acl2::x acl2::y))
            :rule-classes :forward-chaining)

    Theorem: equal-of-ipasir$a-fix-2-forward-to-ipasir$a-equiv

    (defthm equal-of-ipasir$a-fix-2-forward-to-ipasir$a-equiv
            (implies (equal acl2::x (ipasir$a-fix acl2::y))
                     (ipasir$a-equiv acl2::x acl2::y))
            :rule-classes :forward-chaining)

    Theorem: ipasir$a-equiv-of-ipasir$a-fix-1-forward

    (defthm ipasir$a-equiv-of-ipasir$a-fix-1-forward
            (implies (ipasir$a-equiv (ipasir$a-fix acl2::x)
                                     acl2::y)
                     (ipasir$a-equiv acl2::x acl2::y))
            :rule-classes :forward-chaining)

    Theorem: ipasir$a-equiv-of-ipasir$a-fix-2-forward

    (defthm ipasir$a-equiv-of-ipasir$a-fix-2-forward
            (implies (ipasir$a-equiv acl2::x (ipasir$a-fix acl2::y))
                     (ipasir$a-equiv acl2::x acl2::y))
            :rule-classes :forward-chaining)