• Top
  • Vl-portinfo

Vl-portinfo-fix

Fixing function for vl-portinfo structures.

Signature
(vl-portinfo-fix x) → new-x
Arguments
x — Guard (vl-portinfo-p x).
Returns
new-x — Type (vl-portinfo-p new-x).

Definitions and Theorems

Function: vl-portinfo-fix$inline

(defun vl-portinfo-fix$inline (x)
 (declare (xargs :guard (vl-portinfo-p x)))
 (let ((__function__ 'vl-portinfo-fix))
  (declare (ignorable __function__))
  (mbe
   :logic
   (common-lisp::case (vl-portinfo-kind x)
    (:bad (cons :bad nil))
    (:regular
     (b*
      ((portname
        (str-fix
           (std::prod-car (std::prod-car (std::prod-car (cdr x))))))
       (port-dir
        (vl-maybe-direction-fix
           (std::prod-cdr (std::prod-car (std::prod-car (cdr x))))))
       (conn-expr
        (vl-maybe-expr-fix
           (std::prod-car (std::prod-cdr (std::prod-car (cdr x))))))
       (port-lhs
        (sv::lhs-fix
           (std::prod-cdr (std::prod-cdr (std::prod-car (cdr x))))))
       (conn-svex
        (sv::svex-fix
           (std::prod-car (std::prod-car (std::prod-cdr (cdr x))))))
       (port-size
        (pos-fix
           (std::prod-cdr (std::prod-car (std::prod-cdr (cdr x))))))
       (replicatedp
            (std::prod-car (std::prod-cdr (std::prod-cdr (cdr x)))))
       (interfacep
        (acl2::bool-fix
          (std::prod-cdr (std::prod-cdr (std::prod-cdr (cdr x)))))))
      (cons
           :regular
           (std::prod-cons
                (std::prod-cons (std::prod-cons portname port-dir)
                                (std::prod-cons conn-expr port-lhs))
                (std::prod-cons
                     (std::prod-cons conn-svex port-size)
                     (std::prod-cons replicatedp interfacep)))))))
   :exec x)))

Theorem: vl-portinfo-p-of-vl-portinfo-fix

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

Theorem: vl-portinfo-fix-when-vl-portinfo-p

(defthm vl-portinfo-fix-when-vl-portinfo-p
  (implies (vl-portinfo-p x)
           (equal (vl-portinfo-fix x) x)))

Function: vl-portinfo-equiv$inline

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

Theorem: vl-portinfo-equiv-is-an-equivalence

(defthm vl-portinfo-equiv-is-an-equivalence
  (and (booleanp (vl-portinfo-equiv x y))
       (vl-portinfo-equiv x x)
       (implies (vl-portinfo-equiv x y)
                (vl-portinfo-equiv y x))
       (implies (and (vl-portinfo-equiv x y)
                     (vl-portinfo-equiv y z))
                (vl-portinfo-equiv x z)))
  :rule-classes (:equivalence))

Theorem: vl-portinfo-equiv-implies-equal-vl-portinfo-fix-1

(defthm vl-portinfo-equiv-implies-equal-vl-portinfo-fix-1
  (implies (vl-portinfo-equiv acl2::x x-equiv)
           (equal (vl-portinfo-fix acl2::x)
                  (vl-portinfo-fix x-equiv)))
  :rule-classes (:congruence))

Theorem: vl-portinfo-fix-under-vl-portinfo-equiv

(defthm vl-portinfo-fix-under-vl-portinfo-equiv
  (vl-portinfo-equiv (vl-portinfo-fix acl2::x)
                     acl2::x)
  :rule-classes (:rewrite :rewrite-quoted-constant))

Theorem: equal-of-vl-portinfo-fix-1-forward-to-vl-portinfo-equiv

(defthm equal-of-vl-portinfo-fix-1-forward-to-vl-portinfo-equiv
  (implies (equal (vl-portinfo-fix acl2::x)
                  acl2::y)
           (vl-portinfo-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: equal-of-vl-portinfo-fix-2-forward-to-vl-portinfo-equiv

(defthm equal-of-vl-portinfo-fix-2-forward-to-vl-portinfo-equiv
  (implies (equal acl2::x (vl-portinfo-fix acl2::y))
           (vl-portinfo-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: vl-portinfo-equiv-of-vl-portinfo-fix-1-forward

(defthm vl-portinfo-equiv-of-vl-portinfo-fix-1-forward
  (implies (vl-portinfo-equiv (vl-portinfo-fix acl2::x)
                              acl2::y)
           (vl-portinfo-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: vl-portinfo-equiv-of-vl-portinfo-fix-2-forward

(defthm vl-portinfo-equiv-of-vl-portinfo-fix-2-forward
  (implies (vl-portinfo-equiv acl2::x (vl-portinfo-fix acl2::y))
           (vl-portinfo-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: vl-portinfo-kind$inline-of-vl-portinfo-fix-x

(defthm vl-portinfo-kind$inline-of-vl-portinfo-fix-x
  (equal (vl-portinfo-kind$inline (vl-portinfo-fix x))
         (vl-portinfo-kind$inline x)))

Theorem: vl-portinfo-kind$inline-vl-portinfo-equiv-congruence-on-x

(defthm vl-portinfo-kind$inline-vl-portinfo-equiv-congruence-on-x
  (implies (vl-portinfo-equiv x x-equiv)
           (equal (vl-portinfo-kind$inline x)
                  (vl-portinfo-kind$inline x-equiv)))
  :rule-classes :congruence)

Theorem: consp-of-vl-portinfo-fix

(defthm consp-of-vl-portinfo-fix
  (consp (vl-portinfo-fix x))
  :rule-classes :type-prescription)