• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
          • Expression-sizing
          • Occform
          • Oprewrite
          • Expand-functions
          • Delayredux
          • Unparameterization
          • Caseelim
            • Vl-casezx-stmt-elim
            • Vl-casezx-matchexpr
            • Vl-modulelist-caseelim
            • Vl-casezx-match-any-expr
            • Vl-casestmt-elim
            • Vl-casestmt-size-warnings
            • Vl-casezx-elim-aux
            • Vl-stmt-caseelim
            • Case-statement-problems
            • Vl-casestmt-compare-expr
            • Vl-initiallist-caseelim
            • Vl-alwayslist-caseelim
            • Vl-casestmt-elim-aux
            • Vl-initial-caseelim
            • Vl-always-caseelim
            • Vl-casestmt-sizes-agreep
              • Vl-casestmt-matchexpr-sizes-agreep
            • Vl-module-caseelim
            • Vl-design-caseelim
          • Split
          • Selresolve
          • Weirdint-elim
          • Vl-delta
          • Replicate-insts
          • Rangeresolve
          • Propagate
          • Clean-selects
          • Clean-params
          • Blankargs
          • Inline-mods
          • Expr-simp
          • Trunc
          • Always-top
          • Gatesplit
          • Gate-elim
          • Expression-optimization
          • Elim-supplies
          • Wildelim
          • Drop-blankports
          • Clean-warnings
          • Addinstnames
          • Custom-transform-hooks
          • Annotate
          • Latchcode
          • Elim-unused-vars
          • Problem-modules
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Caseelim

Vl-casestmt-sizes-agreep

Make sure all match expressions have been sized and that their sizes are compatible with the test expression.

Signature
(vl-casestmt-sizes-agreep test cases) → *
Arguments
test — Guard (vl-expr-p test).
cases — Guard (vl-caselist-p cases).

Definitions and Theorems

Function: vl-casestmt-sizes-agreep

(defun vl-casestmt-sizes-agreep (test cases)
  (declare (xargs :guard (and (vl-expr-p test)
                              (vl-caselist-p cases))))
  (let ((__function__ 'vl-casestmt-sizes-agreep))
    (declare (ignorable __function__))
    (b* ((cases (vl-caselist-fix cases))
         ((when (atom cases)) t)
         ((cons match-exprs ?body1) (car cases)))
      (and (vl-casestmt-matchexpr-sizes-agreep test match-exprs)
           (vl-casestmt-sizes-agreep test (cdr cases))))))

Theorem: vl-casestmt-sizes-agreep-when-atom

(defthm vl-casestmt-sizes-agreep-when-atom
  (implies (atom cases)
           (equal (vl-casestmt-sizes-agreep test cases)
                  t)))

Theorem: vl-casestmt-sizes-agreep-of-cons

(defthm vl-casestmt-sizes-agreep-of-cons
  (equal (vl-casestmt-sizes-agreep test (cons a cases))
         (if (atom a)
             (vl-casestmt-sizes-agreep test cases)
           (and (vl-casestmt-matchexpr-sizes-agreep test (car a))
                (vl-casestmt-sizes-agreep test cases)))))

Theorem: vl-casestmt-sizes-agreep-of-vl-expr-fix-test

(defthm vl-casestmt-sizes-agreep-of-vl-expr-fix-test
  (equal (vl-casestmt-sizes-agreep (vl-expr-fix test)
                                   cases)
         (vl-casestmt-sizes-agreep test cases)))

Theorem: vl-casestmt-sizes-agreep-vl-expr-equiv-congruence-on-test

(defthm vl-casestmt-sizes-agreep-vl-expr-equiv-congruence-on-test
  (implies (vl-expr-equiv test test-equiv)
           (equal (vl-casestmt-sizes-agreep test cases)
                  (vl-casestmt-sizes-agreep test-equiv cases)))
  :rule-classes :congruence)

Theorem: vl-casestmt-sizes-agreep-of-vl-caselist-fix-cases

(defthm vl-casestmt-sizes-agreep-of-vl-caselist-fix-cases
  (equal (vl-casestmt-sizes-agreep test (vl-caselist-fix cases))
         (vl-casestmt-sizes-agreep test cases)))

Theorem: vl-casestmt-sizes-agreep-vl-caselist-equiv-congruence-on-cases

(defthm
     vl-casestmt-sizes-agreep-vl-caselist-equiv-congruence-on-cases
  (implies (vl-caselist-equiv cases cases-equiv)
           (equal (vl-casestmt-sizes-agreep test cases)
                  (vl-casestmt-sizes-agreep test cases-equiv)))
  :rule-classes :congruence)

Subtopics

Vl-casestmt-matchexpr-sizes-agreep