• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
        • Symbolic-test-vectors
        • Esim-primitives
        • E-conversion
        • Esim-steps
        • Patterns
        • Mod-internal-paths
          • Fast-canonicalize-path
          • Extend-internal-paths
            • Follow-esim-path
          • Defmodules
          • Esim-simplify-update-fns
          • Esim-tutorial
          • Esim-vl
        • Vl2014
        • Sv
        • Fgl
        • Vwsim
        • Vl
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Mod-internal-paths

    Extend-internal-paths

    (extend-internal-paths a x) constructs a new list where a has been consed onto each element of x.

    This is used to extend a list of paths with a new level of the module hierarchy. That is, suppose a is the name of a submodule occurrence, and that x = (x1 x2 ... xn) is the list of paths for all internal wires of that submodule. Then we generate the list:

    (list (hons a x1)
          (hons a x2)
          ...
          (hons a xn))

    which can loosely be thought of as, a.x1, a.x2, etc.

    Definitions and Theorems

    Function: extend-internal-paths-exec

    (defun extend-internal-paths-exec (a x acc)
      (declare (xargs :guard t))
      (if (atom x)
          acc
        (let ((acc (cons (hons a (car x)) acc)))
          (extend-internal-paths-exec a (cdr x)
                                      acc))))

    Function: extend-internal-paths-exec-cons

    (defun extend-internal-paths-exec-cons (a x acc)
      (declare (xargs :guard t))
      (mbe :logic
           (extend-internal-paths-exec a x acc)
           :exec
           (if (atom x)
               acc
             (let ((acc (cons (cons a (car x)) acc)))
               (extend-internal-paths-exec-cons a (cdr x)
                                                acc)))))

    Function: extend-internal-paths

    (defun extend-internal-paths (a x)
      (declare (xargs :guard t))
      (mbe :logic
           (if (atom x)
               nil
             (cons (hons a (car x))
                   (extend-internal-paths a (cdr x))))
           :exec (reverse (extend-internal-paths-exec a x nil))))

    Theorem: extend-internal-paths-exec-removal

    (defthm extend-internal-paths-exec-removal
      (equal (extend-internal-paths-exec a x acc)
             (revappend (extend-internal-paths a x)
                        acc)))

    Function: extend-internal-paths-cons

    (defun extend-internal-paths-cons (a x)
      (declare (xargs :guard t))
      (mbe :logic (extend-internal-paths a x)
           :exec (reverse (extend-internal-paths-exec-cons a x nil))))

    Theorem: cons-listp-of-extend-internal-paths

    (defthm cons-listp-of-extend-internal-paths
      (cons-listp (extend-internal-paths a x)))

    Theorem: len-extend-internal-paths

    (defthm len-extend-internal-paths
      (equal (len (extend-internal-paths u lst))
             (len lst)))