• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
        • Svex-stvs
        • Svex-decomposition-methodology
        • Sv-versus-esim
        • Svex-decomp
        • Svex-compose-dfs
        • Moddb
        • Svex-compilation
          • Alias-normalization
          • Svex-design-flatten-and-normalize
          • Svex-design-compile
          • Svex-composition
            • Svex-compose-assigns-keys
            • Svex-compose*
            • Svex-compose
            • Svex-compose-svstack
            • Svex-assigns-compose1
            • Svex-assigns-compose
            • Svex-compose-bit-sccs
              • Svex-compose-assigns
              • Svex-replace-var
            • Compile.lisp
            • Assign->netassigns
          • Svmods
          • Svstmt
          • Sv-tutorial
          • Expressions
          • Symbolic-test-vector
          • Vl-to-svex
        • Vwsim
        • Fgl
        • Vl
        • Svl
        • X86isa
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Svex-composition

    Svex-compose-bit-sccs

    Signature
    (svex-compose-bit-sccs x trav-index stack 
                           trav-indices finalized-updates params) 
     
      → 
    (mv err min-lowlink new-trav-index new-stack 
        new-trav-indices new-finalized-updates) 
    
    Arguments
    x — current expression/bit (pseudo-node) to be traversed.
        Guard (svex/index-p x).
    trav-index — next unused traversal index.
        Guard (natp trav-index).
    stack — Stack of elements not yet assigned to an SCC.
        Guard (svex/index-nat-alist-p stack).
    trav-indices — Traversal indices of nodes that have been visited.
        Guard (svex/index-nat-alist-p trav-indices).
    finalized-updates — Accumulator of finalized update functions.
        Guard (svex-alist-p finalized-updates).
    params — Guard (svex-scc-consts-p params).
    Returns
    min-lowlink — Type (maybe-natp min-lowlink).
    new-trav-index — Type (natp new-trav-index).
    new-stack — Type (svex/index-nat-alist-p new-stack).
    new-trav-indices — Type (svex/index-nat-alist-p new-trav-indices).
    new-finalized-updates — Type (svex-alist-p new-finalized-updates).

    Implementation notes.

    A node is a variable/bit-index pair that is a looping bit from final-masks. A pseudo-node is an svex/integer pair, representing either a bit of that svex expression (if the index is nonnegative) or a tail of that expression (if negative -- the lognot is the number of bits to shift).