• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
      • Recursion-and-induction
      • Hons-and-memoization
      • Events
      • Parallelism
      • History
      • Programming
      • Operational-semantics
      • Real
      • Start-here
      • Debugging
      • Miscellaneous
      • Output-controls
      • Macros
        • Make-event
        • Defmacro
        • Untranslate-patterns
        • Tc
        • Trans*
        • Macro-aliases-table
        • Macro-args
        • Defabbrev
        • User-defined-functions-table
        • Trans
        • Untranslate-for-execution
        • Add-macro-fn
        • Check-vars-not-free
        • Safe-mode
        • Macro-libraries
          • B*
          • Defunc
          • Fty
          • Apt
          • Std/util
          • Defdata
          • Defrstobj
          • Seq
          • Match-tree
          • Defrstobj
          • With-supporters
          • Def-partial-measure
          • Template-subst
          • Soft
          • Defthm-domain
          • Event-macros
          • Def-universal-equiv
          • Def-saved-obligs
          • With-supporters-after
          • Definec
          • Sig
          • Outer-local
          • Data-structures
            • Deflist
            • Defalist
            • Memory
            • Defstructure
            • Array1
              • Defarray1type
              • Array1-lemmas
                • Reset-array1
                • Array1-functions
                • Array1-disabled-lemmas
              • Utilities
          • Trans1
          • Defmacro-untouchable
          • Set-duplicate-keys-action
          • Add-macro-alias
          • Magic-macroexpand
          • Defmacroq
          • Trans!
          • Remove-macro-fn
          • Remove-macro-alias
          • Add-binop
          • Untrans-table
          • Trans*-
          • Remove-binop
          • Tcp
          • Tca
        • Mailing-lists
        • Interfacing-tools
      • Macro-libraries
        • B*
        • Defunc
        • Fty
        • Apt
        • Std/util
        • Defdata
        • Defrstobj
        • Seq
        • Match-tree
        • Defrstobj
        • With-supporters
        • Def-partial-measure
        • Template-subst
        • Soft
        • Defthm-domain
        • Event-macros
        • Def-universal-equiv
        • Def-saved-obligs
        • With-supporters-after
        • Definec
        • Sig
        • Outer-local
        • Data-structures
          • Deflist
          • Defalist
          • Memory
          • Defstructure
          • Array1
            • Defarray1type
            • Array1-lemmas
              • Reset-array1
              • Array1-functions
              • Array1-disabled-lemmas
            • Utilities
        • Interfacing-tools
        • Hardware-verification
        • Software-verification
        • Math
        • Testing-utilities
      • Array1

      Array1-lemmas

      A theory of all enabled rules exported by the array1 book.

      Note that in order for these rules to be applicable you will first need to disable the theory array1-functions.

      Definitions and Theorems

      Theorem: array1p-compress1

      (defthm array1p-compress1
        (implies (array1p name l)
                 (array1p name (compress1 name l))))

      Theorem: array1p-compress1-properties

      (defthm array1p-compress1-properties
        (implies (array1p name l)
                 (and (equal (header name (compress1 name l))
                             (header name l))
                      (equal (dimensions name (compress1 name l))
                             (dimensions name l))
                      (equal (maximum-length name (compress1 name l))
                             (maximum-length name l))
                      (equal (default name (compress1 name l))
                             (default name l)))))

      Theorem: array1p-aset1

      (defthm array1p-aset1
        (implies (and (array1p name l)
                      (integerp n)
                      (>= n 0)
                      (< n (car (dimensions name l))))
                 (array1p name (aset1 name l n val))))

      Theorem: array1p-aset1-properties

      (defthm array1p-aset1-properties
        (implies (and (array1p name l)
                      (integerp n)
                      (>= n 0)
                      (< n (car (dimensions name l))))
                 (and (equal (header name (aset1 name l n val))
                             (header name l))
                      (equal (dimensions name (aset1 name l n val))
                             (dimensions name l))
                      (equal (maximum-length name (aset1 name l n val))
                             (maximum-length name l))
                      (equal (default name (aset1 name l n val))
                             (default name l)))))

      Theorem: aref1-compress1

      (defthm aref1-compress1
        (implies (and (array1p name l)
                      (integerp n)
                      (>= n 0)
                      (< n (car (dimensions name l))))
                 (equal (aref1 name (compress1 name l) n)
                        (aref1 name l n))))

      Theorem: array1p-acons-properties

      (defthm array1p-acons-properties
        (implies (integerp n)
                 (and (equal (header name (cons (cons n val) l))
                             (header name l))
                      (equal (dimensions name (cons (cons n val) l))
                             (dimensions name l))
                      (equal (maximum-length name (cons (cons n val) l))
                             (maximum-length name l))
                      (equal (default name (cons (cons n val) l))
                             (default name l)))))

      Theorem: array1p-consp-header

      (defthm array1p-consp-header
        (implies (array1p name l)
                 (consp (header name l)))
        :rule-classes :type-prescription)

      Theorem: array1p-car-header

      (defthm array1p-car-header
        (implies (array1p name l)
                 (equal (car (header name l)) :header)))

      Theorem: aref1-aset1-equal

      (defthm aref1-aset1-equal
        (implies (and (array1p name l)
                      (integerp n)
                      (>= n 0)
                      (< n (car (dimensions name l))))
                 (equal (aref1 name (aset1 name l n val) n)
                        val)))

      Theorem: aref1-aset1-not-equal

      (defthm aref1-aset1-not-equal
        (implies (and (array1p name l)
                      (integerp n1)
                      (>= n1 0)
                      (< n1 (car (dimensions name l)))
                      (integerp n2)
                      (>= n2 0)
                      (< n2 (car (dimensions name l)))
                      (not (equal n1 n2)))
                 (equal (aref1 name (aset1 name l n1 val) n2)
                        (aref1 name l n2))))

      Theorem: aref1-aset1

      (defthm aref1-aset1
        (implies (and (array1p name l)
                      (integerp n1)
                      (>= n1 0)
                      (< n1 (car (dimensions name l)))
                      (integerp n2)
                      (>= n2 0)
                      (< n2 (car (dimensions name l))))
                 (equal (aref1 name (aset1 name l n1 val) n2)
                        (if (equal n1 n2)
                            val
                          (aref1 name l n2)))))

      Theorem: array1p-forward-modular

      (defthm array1p-forward-modular
        (implies
             (array1p name l)
             (and (symbolp name)
                  (alistp l)
                  (keyword-value-listp (cdr (header name l)))
                  (true-listp (dimensions name l))
                  (equal (length (dimensions name l)) 1)
                  (integerp (car (dimensions name l)))
                  (integerp (maximum-length name l))
                  (< 0 (car (dimensions name l)))
                  (<= (car (dimensions name l))
                      (maximum-length name l))
                  (<= (maximum-length name l)
                      (array-maximum-length-bound))
                  (bounded-integer-alistp l (car (dimensions name l)))))
        :rule-classes :forward-chaining)