• Top
  • Vl-portinfolist

Vl-portinfolist-fix

(vl-portinfolist-fix x) is a usual fty list fixing function.

Signature
(vl-portinfolist-fix x) → fty::newx
Arguments
x — Guard (vl-portinfolist-p x).
Returns
fty::newx — Type (vl-portinfolist-p fty::newx).

In the logic, we apply vl-portinfo-fix to each member of the x. In the execution, none of that is actually necessary and this is just an inlined identity function.

Definitions and Theorems

Function: vl-portinfolist-fix$inline

(defun vl-portinfolist-fix$inline (x)
  (declare (xargs :guard (vl-portinfolist-p x)))
  (let ((__function__ 'vl-portinfolist-fix))
    (declare (ignorable __function__))
    (mbe :logic
         (if (atom x)
             x
           (cons (vl-portinfo-fix (car x))
                 (vl-portinfolist-fix (cdr x))))
         :exec x)))

Theorem: vl-portinfolist-p-of-vl-portinfolist-fix

(defthm vl-portinfolist-p-of-vl-portinfolist-fix
  (b* ((fty::newx (vl-portinfolist-fix$inline x)))
    (vl-portinfolist-p fty::newx))
  :rule-classes :rewrite)

Theorem: vl-portinfolist-fix-when-vl-portinfolist-p

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

Function: vl-portinfolist-equiv$inline

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

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

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

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

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

Theorem: vl-portinfolist-fix-under-vl-portinfolist-equiv

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

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

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

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

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

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

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

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

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

Theorem: car-of-vl-portinfolist-fix-x-under-vl-portinfo-equiv

(defthm car-of-vl-portinfolist-fix-x-under-vl-portinfo-equiv
  (vl-portinfo-equiv (car (vl-portinfolist-fix acl2::x))
                     (car acl2::x)))

Theorem: car-vl-portinfolist-equiv-congruence-on-x-under-vl-portinfo-equiv

(defthm
  car-vl-portinfolist-equiv-congruence-on-x-under-vl-portinfo-equiv
  (implies (vl-portinfolist-equiv acl2::x x-equiv)
           (vl-portinfo-equiv (car acl2::x)
                              (car x-equiv)))
  :rule-classes :congruence)

Theorem: cdr-of-vl-portinfolist-fix-x-under-vl-portinfolist-equiv

(defthm cdr-of-vl-portinfolist-fix-x-under-vl-portinfolist-equiv
  (vl-portinfolist-equiv (cdr (vl-portinfolist-fix acl2::x))
                         (cdr acl2::x)))

Theorem: cdr-vl-portinfolist-equiv-congruence-on-x-under-vl-portinfolist-equiv

(defthm
 cdr-vl-portinfolist-equiv-congruence-on-x-under-vl-portinfolist-equiv
 (implies (vl-portinfolist-equiv acl2::x x-equiv)
          (vl-portinfolist-equiv (cdr acl2::x)
                                 (cdr x-equiv)))
 :rule-classes :congruence)

Theorem: cons-of-vl-portinfo-fix-x-under-vl-portinfolist-equiv

(defthm cons-of-vl-portinfo-fix-x-under-vl-portinfolist-equiv
  (vl-portinfolist-equiv (cons (vl-portinfo-fix acl2::x) acl2::y)
                         (cons acl2::x acl2::y)))

Theorem: cons-vl-portinfo-equiv-congruence-on-x-under-vl-portinfolist-equiv

(defthm
 cons-vl-portinfo-equiv-congruence-on-x-under-vl-portinfolist-equiv
 (implies (vl-portinfo-equiv acl2::x x-equiv)
          (vl-portinfolist-equiv (cons acl2::x acl2::y)
                                 (cons x-equiv acl2::y)))
 :rule-classes :congruence)

Theorem: cons-of-vl-portinfolist-fix-y-under-vl-portinfolist-equiv

(defthm cons-of-vl-portinfolist-fix-y-under-vl-portinfolist-equiv
 (vl-portinfolist-equiv (cons acl2::x (vl-portinfolist-fix acl2::y))
                        (cons acl2::x acl2::y)))

Theorem: cons-vl-portinfolist-equiv-congruence-on-y-under-vl-portinfolist-equiv

(defthm
 cons-vl-portinfolist-equiv-congruence-on-y-under-vl-portinfolist-equiv
 (implies (vl-portinfolist-equiv acl2::y y-equiv)
          (vl-portinfolist-equiv (cons acl2::x acl2::y)
                                 (cons acl2::x y-equiv)))
 :rule-classes :congruence)

Theorem: consp-of-vl-portinfolist-fix

(defthm consp-of-vl-portinfolist-fix
  (equal (consp (vl-portinfolist-fix acl2::x))
         (consp acl2::x)))

Theorem: vl-portinfolist-fix-of-cons

(defthm vl-portinfolist-fix-of-cons
  (equal (vl-portinfolist-fix (cons a x))
         (cons (vl-portinfo-fix a)
               (vl-portinfolist-fix x))))

Theorem: len-of-vl-portinfolist-fix

(defthm len-of-vl-portinfolist-fix
  (equal (len (vl-portinfolist-fix acl2::x))
         (len acl2::x)))

Theorem: vl-portinfolist-fix-of-append

(defthm vl-portinfolist-fix-of-append
  (equal (vl-portinfolist-fix (append std::a std::b))
         (append (vl-portinfolist-fix std::a)
                 (vl-portinfolist-fix std::b))))

Theorem: vl-portinfolist-fix-of-repeat

(defthm vl-portinfolist-fix-of-repeat
  (equal (vl-portinfolist-fix (repeat acl2::n acl2::x))
         (repeat acl2::n (vl-portinfo-fix acl2::x))))

Theorem: nth-of-vl-portinfolist-fix

(defthm nth-of-vl-portinfolist-fix
  (equal (nth acl2::n (vl-portinfolist-fix acl2::x))
         (if (< (nfix acl2::n) (len acl2::x))
             (vl-portinfo-fix (nth acl2::n acl2::x))
           nil)))

Theorem: vl-portinfolist-equiv-implies-vl-portinfolist-equiv-append-1

(defthm vl-portinfolist-equiv-implies-vl-portinfolist-equiv-append-1
  (implies (vl-portinfolist-equiv acl2::x fty::x-equiv)
           (vl-portinfolist-equiv (append acl2::x acl2::y)
                                  (append fty::x-equiv acl2::y)))
  :rule-classes (:congruence))

Theorem: vl-portinfolist-equiv-implies-vl-portinfolist-equiv-append-2

(defthm vl-portinfolist-equiv-implies-vl-portinfolist-equiv-append-2
  (implies (vl-portinfolist-equiv acl2::y fty::y-equiv)
           (vl-portinfolist-equiv (append acl2::x acl2::y)
                                  (append acl2::x fty::y-equiv)))
  :rule-classes (:congruence))

Theorem: vl-portinfolist-equiv-implies-vl-portinfolist-equiv-nthcdr-2

(defthm vl-portinfolist-equiv-implies-vl-portinfolist-equiv-nthcdr-2
  (implies (vl-portinfolist-equiv acl2::l l-equiv)
           (vl-portinfolist-equiv (nthcdr acl2::n acl2::l)
                                  (nthcdr acl2::n l-equiv)))
  :rule-classes (:congruence))

Theorem: vl-portinfolist-equiv-implies-vl-portinfolist-equiv-take-2

(defthm vl-portinfolist-equiv-implies-vl-portinfolist-equiv-take-2
  (implies (vl-portinfolist-equiv acl2::l l-equiv)
           (vl-portinfolist-equiv (take acl2::n acl2::l)
                                  (take acl2::n l-equiv)))
  :rule-classes (:congruence))