• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Vwsim
      • Fgl
      • Vl
        • Syntax
        • Loader
        • Warnings
        • Getting-started
        • Utilities
        • Printer
          • Ps
          • Verilog-printing
          • Basic-printing
            • Vl-println?
            • Vl-print
            • Vl-printable-p
            • Vl-col-after-printing-string
              • Vl-col-after-printing-string-aux
              • Vl-col-after-printing-chars
              • Vl-print-strings-with-commas
              • Vl-string-needs-html-encoding-p
              • Vl-println-markup
              • Vl-print-strings-as-lines
              • Vl-print-url
              • Vl-print-nat
              • Vl-indent
              • Vl-println
              • Vl-print-markup
              • Vl-ps-seq
              • Vl-cw-ps-seq
              • Vl-when-html
              • Vl-ps-span
            • Printing-locally
            • Formatted-printing
            • Accessing-printed-output
            • Json-printing
            • Vl-printedlist
          • Kit
          • Mlib
          • Transforms
        • Svl
        • X86isa
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Vl-col-after-printing-string

    Vl-col-after-printing-string-aux

    Signature
    (vl-col-after-printing-string-aux col x n xl) → new-col
    Arguments
    col — Current column we're at.
        Guard (natp col).
    x — String we're about to print, not yet reversed.
        Guard (stringp x).
    n — Current position in X.
        Guard (natp n).
    xl — Pre-computed length of X.
        Guard (eql xl (length x)).
    Returns
    new-col — Type (natp new-col).

    Definitions and Theorems

    Function: vl-col-after-printing-string-aux

    (defun vl-col-after-printing-string-aux (col x n xl)
     (declare (xargs :guard (and (natp col)
                                 (stringp x)
                                 (natp n)
                                 (eql xl (length x)))))
     (declare (type unsigned-byte col n xl)
              (type string x))
     (declare (xargs :split-types t :guard (<= n xl)))
     (let ((__function__ 'vl-col-after-printing-string-aux))
      (declare (ignorable __function__))
      (mbe
         :logic (vl-col-after-printing-chars col (nthcdr n (explode x)))
         :exec (cond ((eql xl n) col)
                     ((eql (char x n) #\Newline)
                      (vl-col-after-printing-string-aux 0 x (+ 1 n)
                                                        xl))
                     (t (vl-col-after-printing-string-aux (+ 1 col)
                                                          x (+ 1 n)
                                                          xl))))))

    Theorem: natp-of-vl-col-after-printing-string-aux

    (defthm natp-of-vl-col-after-printing-string-aux
      (b* ((new-col (vl-col-after-printing-string-aux col x n xl)))
        (natp new-col))
      :rule-classes :type-prescription)

    Theorem: vl-col-after-printing-string-aux-of-nfix-col

    (defthm vl-col-after-printing-string-aux-of-nfix-col
      (equal (vl-col-after-printing-string-aux (nfix col)
                                               x n xl)
             (vl-col-after-printing-string-aux col x n xl)))

    Theorem: vl-col-after-printing-string-aux-nat-equiv-congruence-on-col

    (defthm vl-col-after-printing-string-aux-nat-equiv-congruence-on-col
      (implies
           (acl2::nat-equiv col col-equiv)
           (equal (vl-col-after-printing-string-aux col x n xl)
                  (vl-col-after-printing-string-aux col-equiv x n xl)))
      :rule-classes :congruence)

    Theorem: vl-col-after-printing-string-aux-of-str-fix-x

    (defthm vl-col-after-printing-string-aux-of-str-fix-x
      (equal (vl-col-after-printing-string-aux col (str-fix x)
                                               n xl)
             (vl-col-after-printing-string-aux col x n xl)))

    Theorem: vl-col-after-printing-string-aux-streqv-congruence-on-x

    (defthm vl-col-after-printing-string-aux-streqv-congruence-on-x
      (implies
           (streqv x x-equiv)
           (equal (vl-col-after-printing-string-aux col x n xl)
                  (vl-col-after-printing-string-aux col x-equiv n xl)))
      :rule-classes :congruence)

    Theorem: vl-col-after-printing-string-aux-of-nfix-n

    (defthm vl-col-after-printing-string-aux-of-nfix-n
      (equal (vl-col-after-printing-string-aux col x (nfix n)
                                               xl)
             (vl-col-after-printing-string-aux col x n xl)))

    Theorem: vl-col-after-printing-string-aux-nat-equiv-congruence-on-n

    (defthm vl-col-after-printing-string-aux-nat-equiv-congruence-on-n
      (implies
           (acl2::nat-equiv n n-equiv)
           (equal (vl-col-after-printing-string-aux col x n xl)
                  (vl-col-after-printing-string-aux col x n-equiv xl)))
      :rule-classes :congruence)