• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • ACL2
    • Macro-libraries
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
        • Symbolic-test-vectors
        • Esim-primitives
        • E-conversion
          • Vl-ealist-p
          • Modinsts-to-eoccs
          • Vl-module-make-esim
          • Exploding-vectors
            • Vl-wirealist-p
              • Vl-msb-expr-bitlist
              • Vl-plain-wire-name
              • Vl-module-wirealist
              • Vl-emodwires-from-high-to-low
              • Vl-vardecl-msb-emodwires
              • Vl-vardecllist-to-wirealist
              • Vl-emodwires-from-msb-to-lsb
              • Vl-verilogify-emodwirelist
                • Vl-match-contiguous-indices
                • Vl-verilogify-merged-indices
                • Vl-merge-contiguous-indices
                  • Vl-merged-index-list-p
                  • Vl-merged-index-p
            • Emodwire-encoding
            • Vl-emodwire-p
            • Vl-emodwirelistlist
            • Vl-emodwirelist
          • Resolving-multiple-drivers
          • Vl-modulelist-make-esims
          • Vl-module-check-e-ok
          • Vl-collect-design-wires
          • Adding-z-drivers
          • Vl-design-to-e
          • Vl-design-to-e-check-ports
          • Vl-design-to-e-main
          • Port-bit-checking
        • Esim-steps
        • Patterns
        • Mod-internal-paths
        • Defmodules
        • Esim-simplify-update-fns
        • Esim-tutorial
        • Esim-vl
      • Vl2014
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Vl-verilogify-emodwirelist

Vl-merge-contiguous-indices

Transform a vl-maybe-nat-listp by combining contiguous sequences of indices into (low . high) pairs.

For example:

(vl-merge-contiguous-indices '(1 2 3 5 6 7 8 9 10 15 17 18))
 -->
((1 . 3) (5 . 10) 15 (17 . 18))

Definitions and Theorems

Function: vl-merge-contiguous-indices

(defun vl-merge-contiguous-indices (x)
  (declare (xargs :guard (vl-maybe-nat-listp x)))
  (if (atom x)
      nil
    (mv-let (range-end rest)
            (vl-match-contiguous-indices (car x)
                                         (cdr x))
      (if (equal (car x) range-end)
          (cons (car x)
                (vl-merge-contiguous-indices (cdr x)))
        (cons (cons (car x) range-end)
              (vl-merge-contiguous-indices rest))))))

Theorem: vl-merged-index-list-p-of-vl-merge-contiguous-indices

(defthm vl-merged-index-list-p-of-vl-merge-contiguous-indices
 (implies (force (vl-maybe-nat-listp x))
          (vl-merged-index-list-p (vl-merge-contiguous-indices x))))

Subtopics

Vl-merged-index-list-p
(vl-merged-index-list-p x) recognizes lists where every element satisfies vl-merged-index-p.
Vl-merged-index-p