• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
        • Svex-stvs
          • Svtv-data
          • Defsvtv$
          • Svtv-run
          • Defsvtv-phasewise
          • Svtv
          • Svtv-spec
          • Defsvtv
          • Process.lisp
          • Svtv-doc
          • Svtv-chase$
          • Svtv-versus-stv
          • Svtv-debug-fsm
          • Structure.lisp
          • Svtv-debug
          • Def-pipeline-thm
          • Expand.lisp
            • Svtv-parse-path-indices
            • Svtv-extend-entrylist
            • Svtv-parse-path/select-aux
            • Svtv-fsm-add-names
            • Svtv-1wire->lhs
            • Svtv-wires->lhses
            • Svtv-concat->lhs
            • Svtv-wire->lhs!
            • Svtv-lines->overrides
              • Svtv-wire->lhs
              • Svtv-mod-alias-guard
              • Svtv-fsm-mod-alias-guard
              • Svtv-parse-path/select
              • Svtv-expand-lines
              • Svtv-max-length
              • Msg-list
            • Def-cycle-thm
            • Svtv-utilities
            • Svtv-debug$
            • Defsvtv$-phasewise
          • Svex-decomposition-methodology
          • Sv-versus-esim
          • Svex-decomp
          • Svex-compose-dfs
          • Svex-compilation
          • Moddb
          • Svmods
          • Svstmt
          • Sv-tutorial
          • Expressions
          • Symbolic-test-vector
          • Vl-to-svex
        • Fgl
        • Vwsim
        • Vl
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Expand.lisp

    Svtv-lines->overrides

    Signature
    (svtv-lines->overrides x index) → (mv svtv-ovs lhs-ovs)
    Arguments
    x — Guard (svtv-lines-p x).
    index — Guard (natp index).
    Returns
    svtv-ovs — Type (svtv-overridelines-p svtv-ovs).
    lhs-ovs — Type (lhs-overridelist-p lhs-ovs).

    Definitions and Theorems

    Function: svtv-lines->overrides

    (defun svtv-lines->overrides (x index)
      (declare (xargs :guard (and (svtv-lines-p x) (natp index))))
      (let ((__function__ 'svtv-lines->overrides))
        (declare (ignorable __function__))
        (b* (((when (atom x)) (mv nil nil))
             ((svtv-line xf) (car x))
             (testvar (make-svar :name (cons ':svtv-override-test
                                             (lnfix index))))
             (valvar (make-svar :name (cons ':svtv-override-val
                                            (lnfix index))))
             (ov (make-lhs-override :lhs xf.lhs
                                    :test (svex-var testvar)
                                    :val (svex-var valvar)))
             ((mv svtv-ovs lhs-ovs)
              (svtv-lines->overrides (cdr x)
                                     (1+ (lnfix index)))))
          (mv (cons (make-svtv-overrideline :lhs xf.lhs
                                            :test testvar
                                            :val valvar
                                            :entries xf.entries)
                    svtv-ovs)
              (cons ov lhs-ovs)))))

    Theorem: svtv-overridelines-p-of-svtv-lines->overrides.svtv-ovs

    (defthm svtv-overridelines-p-of-svtv-lines->overrides.svtv-ovs
      (b* (((mv ?svtv-ovs ?lhs-ovs)
            (svtv-lines->overrides x index)))
        (svtv-overridelines-p svtv-ovs))
      :rule-classes :rewrite)

    Theorem: lhs-overridelist-p-of-svtv-lines->overrides.lhs-ovs

    (defthm lhs-overridelist-p-of-svtv-lines->overrides.lhs-ovs
      (b* (((mv ?svtv-ovs ?lhs-ovs)
            (svtv-lines->overrides x index)))
        (lhs-overridelist-p lhs-ovs))
      :rule-classes :rewrite)

    Theorem: svtv-lines->overrides-of-svtv-lines-fix-x

    (defthm svtv-lines->overrides-of-svtv-lines-fix-x
      (equal (svtv-lines->overrides (svtv-lines-fix x)
                                    index)
             (svtv-lines->overrides x index)))

    Theorem: svtv-lines->overrides-svtv-lines-equiv-congruence-on-x

    (defthm svtv-lines->overrides-svtv-lines-equiv-congruence-on-x
      (implies (svtv-lines-equiv x x-equiv)
               (equal (svtv-lines->overrides x index)
                      (svtv-lines->overrides x-equiv index)))
      :rule-classes :congruence)

    Theorem: svtv-lines->overrides-of-nfix-index

    (defthm svtv-lines->overrides-of-nfix-index
      (equal (svtv-lines->overrides x (nfix index))
             (svtv-lines->overrides x index)))

    Theorem: svtv-lines->overrides-nat-equiv-congruence-on-index

    (defthm svtv-lines->overrides-nat-equiv-congruence-on-index
      (implies (nat-equiv index index-equiv)
               (equal (svtv-lines->overrides x index)
                      (svtv-lines->overrides x index-equiv)))
      :rule-classes :congruence)