• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
      • Std/lists
      • Std/alists
      • Obags
      • Std/util
      • Std/strings
      • Std/io
      • Std/osets
      • Std/system
      • Std/basic
        • Maybe-stringp
        • Maybe-natp
        • Two-nats-measure
        • Impossible
        • Nat-list-measure
        • Bytep
        • Maybe-posp
        • Nibblep
        • Mbt$
        • Organize-symbols-by-pkg
        • Organize-symbols-by-name
        • Good-valuep
        • Lnfix
        • Streqv
        • Chareqv
        • Symbol-package-name-non-cl
        • Arith-equivs
        • Std/basic-extensions
        • Induction-schemes
        • Maybe-integerp
        • Char-fix
          • Charlist-fix
          • Symbol-package-name-lst
          • Pos-fix
          • Maybe-bitp
          • Good-pseudo-termp
          • Str-fix
          • Maybe-string-fix
          • Lifix
          • Bfix
          • Impliez
          • Tuplep
          • Std/basic/symbol-name-lst
          • Std/basic/intern-in-package-of-symbol
          • Lbfix
          • True
          • Std/basic/member-symbol-name
          • False
        • Std/typed-lists
        • Std/bitsets
        • Std/testing
        • Std/typed-alists
        • Std/stobjs
        • Std-extensions
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Char-fix

    Charlist-fix

    (charlist-fix x) maps ACL2::char-fix across a list.

    Signature
    (charlist-fix x) → *

    This is an ordinary defprojection.

    Definitions and Theorems

    Function: charlist-fix-exec

    (defun
        charlist-fix-exec (x acc)
        (declare (xargs :guard t))
        (let ((__function__ 'charlist-fix-exec))
             (declare (ignorable __function__))
             (if (consp x)
                 (charlist-fix-exec (cdr x)
                                    (cons (acl2::char-fix (car x)) acc))
                 acc)))

    Function: charlist-fix-nrev

    (defun
     charlist-fix-nrev (x acl2::nrev)
     (declare (xargs :stobjs (acl2::nrev)))
     (declare (xargs :guard t))
     (let
         ((__function__ 'charlist-fix-nrev))
         (declare (ignorable __function__))
         (if (atom x)
             (acl2::nrev-fix acl2::nrev)
             (let ((acl2::nrev (acl2::nrev-push (acl2::char-fix (car x))
                                                acl2::nrev)))
                  (charlist-fix-nrev (cdr x)
                                     acl2::nrev)))))

    Function: charlist-fix

    (defun
     charlist-fix (x)
     (declare (xargs :guard t))
     (let
      ((__function__ 'charlist-fix))
      (declare (ignorable __function__))
      (mbe
        :logic (if (consp x)
                   (cons (acl2::char-fix (car x))
                         (charlist-fix (cdr x)))
                   nil)
        :exec
        (if (atom x)
            nil
            (acl2::with-local-nrev (charlist-fix-nrev x acl2::nrev))))))

    Theorem: charlist-fix-of-rev

    (defthm charlist-fix-of-rev
            (equal (charlist-fix (acl2::rev acl2::x))
                   (acl2::rev (charlist-fix acl2::x)))
            :rule-classes ((:rewrite)))

    Theorem: charlist-fix-nrev-removal

    (defthm charlist-fix-nrev-removal
            (equal (charlist-fix-nrev acl2::x acl2::nrev)
                   (append acl2::nrev (charlist-fix acl2::x)))
            :rule-classes ((:rewrite)))

    Theorem: charlist-fix-exec-removal

    (defthm charlist-fix-exec-removal
            (equal (charlist-fix-exec acl2::x acl2::acc)
                   (revappend (charlist-fix acl2::x)
                              acl2::acc))
            :rule-classes ((:rewrite)))

    Theorem: charlist-fix-of-list-fix

    (defthm charlist-fix-of-list-fix
            (equal (charlist-fix (list-fix acl2::x))
                   (charlist-fix acl2::x))
            :rule-classes ((:rewrite)))

    Theorem: charlist-fix-of-append

    (defthm charlist-fix-of-append
            (equal (charlist-fix (append acl2::a acl2::b))
                   (append (charlist-fix acl2::a)
                           (charlist-fix acl2::b)))
            :rule-classes ((:rewrite)))

    Theorem: cdr-of-charlist-fix

    (defthm cdr-of-charlist-fix
            (equal (cdr (charlist-fix acl2::x))
                   (charlist-fix (cdr acl2::x)))
            :rule-classes ((:rewrite)))

    Theorem: car-of-charlist-fix

    (defthm car-of-charlist-fix
            (equal (car (charlist-fix acl2::x))
                   (and (consp acl2::x)
                        (acl2::char-fix (car acl2::x))))
            :rule-classes ((:rewrite)))

    Theorem: charlist-fix-under-iff

    (defthm charlist-fix-under-iff
            (iff (charlist-fix acl2::x)
                 (consp acl2::x))
            :rule-classes ((:rewrite)))

    Theorem: consp-of-charlist-fix

    (defthm consp-of-charlist-fix
            (equal (consp (charlist-fix acl2::x))
                   (consp acl2::x))
            :rule-classes ((:rewrite)))

    Theorem: len-of-charlist-fix

    (defthm len-of-charlist-fix
            (equal (len (charlist-fix acl2::x))
                   (len acl2::x))
            :rule-classes ((:rewrite)))

    Theorem: true-listp-of-charlist-fix

    (defthm true-listp-of-charlist-fix
            (true-listp (charlist-fix acl2::x))
            :rule-classes :type-prescription)

    Theorem: charlist-fix-when-not-consp

    (defthm charlist-fix-when-not-consp
            (implies (not (consp acl2::x))
                     (equal (charlist-fix acl2::x) nil))
            :rule-classes ((:rewrite)))

    Theorem: charlist-fix-of-cons

    (defthm charlist-fix-of-cons
            (equal (charlist-fix (cons acl2::a acl2::b))
                   (cons (acl2::char-fix acl2::a)
                         (charlist-fix acl2::b)))
            :rule-classes ((:rewrite)))