• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • 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
      • 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
          • Interfacing-tools
        • 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)