• Top
    • Documentation
      • Xdoc
        • Undocumented
          • Interp-flags
          • Simpcode
          • Npn4
          • Cutinfo
          • Glcp-config-p
          • Glmc-config-p
          • Defsvtv-args
          • Vl-renaming-alist-p
          • Vcd-pathmap-p
            • Vcd-idxhash-p
            • *atc-exec-binary-strict-pure-rules*
            • Ecut-wirename-alistp
            • Context
            • Incremental-extremize-config-p
            • Block-headerp
            • Ctrex-rule
            • Execution-environmentp
            • Glmc-fsm-p
            • Transactionp
            • Eqbylbp-config-p
            • Proof-obligation
            • Cgraph-edge
            • Wcp-instance-rule-p
            • Fgl-casesplit-config
            • Wcp-witness-rule-p
            • Obligation-hyp
            • Vl-parsestate
            • Ecutnames-p
            • Te-args
            • Fgl-satlink-monolithic-sat-config
            • Fn-info-elt-p
            • Wcp-template-p
            • Truth-idx
            • Polarity4
            • Phase-fsm-params
            • Propiso-info-p
            • Cutscore
            • Vl-rhs
            • Truth6
            • Constraint-tuple
            • Truth5
            • Truth4
            • Truth3
            • Svexl-node
            • Ringosc3
            • Prof-entry-p
            • Constraint-tuple-p
            • Fgl-rune
            • Stv-spec-p
            • Run-snippet-file-info
            • Svex-scc-consts
            • Fsm
            • Machine-statep
            • Xor-signature-p
            • Run-snippet-info
            • Svtv-precompose-data
            • Pipeline-setup
            • Maybe-svar-p
            • Svl-module
            • Maybe-fgl-generic-rule
            • Frames
            • Maybe-snippet-mismatch
            • Cpuid-info-p
            • Vl-warningtree
            • Maybe-proof-obligation
            • Svtv-override-check
            • Maybe-svtv-chase-evaldata
            • Fty-info
            • Prof-entry
            • Substatep
            • Vl-maybe-rhs
            • Vl-parsed-ports
            • Svex-context
            • Account-statep
            • Maybe-simpcode
            • Maybe-rational
            • Maybe-svex
            • Flatten-res
            • Svex-reduce-config
            • Fty-type
            • Rewrite
            • Snippet-info
            • Addnames-indices
            • Svtv*-phase
            • Segment-driver
            • Satlink-parser-state
            • Fgl-binder-rune
            • Congruence-rule
            • Snippet-mismatch
            • Vl-ctxexpr
            • Rsh-of-concat-table
            • Chase-position
            • Hyp-tuple-p
            • Glcp-obj-ctrex-p
            • Glcp-bit-ctrex-p
            • Block$-p
            • Boundrw-subst-p
            • Svtv-cyclephase
            • Svar-split
            • Scopetree
            • Flatnorm-res
            • Fgl-rule
            • Constraint-rule
            • Vl-user-paramsetting
            • Svtv-override-triple
            • Svtv-evaldata
            • Svtv-composedata
            • Width-of-svex-extn
            • Array-fieldinfo-p
            • Wcp-example-app-p
            • Svtv*-input
            • Svex-override-triple
            • Svar-override-triple
            • 3col4vecline
            • Constraint-rule-p
            • Vl-parsed-ports
            • Svtv-chase-evaldata
            • Svtv-assigns-override-config
            • Svex/index
            • Svl-env
            • Svl-aliasdb
            • Inverter
            • Fgl-binder-rule
            • Bvar-db-consistency-error
            • Wcp-lit-actions-p
            • Vcd-multivector-p
            • Svtv-fsm
            • Svexl
            • Constraint-instance
            • Vl-parsestate
            • Partsum-comp
            • Classname/params
            • Vcd-vector-p
            • Tmp-occ
            • Svl-occ
            • Svexllist
            • Svexl-alist
            • Integerp-of-svex-extn
            • Uninterpreted
            • Rw-pair
            • Vl-echar-raw
            • Vl-echar-raw
            • Use-set
            • Svtv-probe
            • Svex-phase-varname
            • Svex-cycle-varname
            • Range
            • Phase-fsm-config
            • Overridekey-syntaxcheck-data
            • Constraint
            • Alias
            • Sig
            • Sandwich
            • Cgraph-derivstate
            • Candidate-assign
            • Svex-alist-eval-equiv!
            • Svex-alist-eval-equiv
            • Scalar-fieldinfo-p
            • Fe-list-listp
            • Fgl-ev-congruence-rulelist-correct-p
            • N-outputs-dom-supergates-sweep-config
            • Svex-envlists-equivalent
            • Svex-alistlist-eval-equiv
            • Flatnorm-setup
            • G-map-tag
            • Obs-sdom-array
            • Dom-supergates-sweep-config
            • Truth4arr
            • Npn4arr
            • Syndef::acid4
            • Svex-envlists-similar
            • Svex-alist-compose-equiv
            • Sym-prod
            • Fgl-congruence-rune
            • Svex-envs-1mask-equiv
            • U32arr
            • Litarr
            • Aigtrans
            • Svexlist-eval-equiv
            • N-outputs-unreachability-config
            • Svex-eval-equiv
            • Unreachability-config
            • Keys-equiv
            • Vl-maybe-exprtype-list-p
            • Svex-alistlist
            • Svar-overridetype-p
            • Vcd-indexlist-p
            • Alternative-spec-listp
            • Variable-listp
            • Vcd-vectorlist-p
            • Vcd-multivectorlist-p
            • Field-spec-listp
            • Neteval-ordering
            • Prof-entrylist-p
            • Hyp-tuplelist-p
            • Glcp-obj-ctrexlist-p
            • Symbol-path-list-p
            • Pseudo-input-listp
            • Input-listp
            • Ecutname-list-p
            • Boundrw-substlist-p
            • Constraintlist
            • Fgl-object-bindings
            • Fgl-generic-rule
            • 4v-equiv
            • Sdm-instruction-table
            • Svexl-node-array
            • Sig-path
            • Func-alist
            • Fgl-generic-rune
            • Fgl-ev-iff-equiv
            • Pseudo-term-subst
            • Nth-lit-equiv
            • Frames-equiv
            • Eval-formula-equiv
            • Svex-s4env
            • Svex-env-keys-equiv
            • Svex-alist-keys-equiv
            • Pseudo-term-alist
            • Fgl-ev-equiv
            • Lits-equiv
            • Nth-nat-equiv
            • Faig-const-equiv
            • Bdd-equiv
            • Byte-list
            • Vl-user-paramsettings
            • Classname/params-unparam-map
            • Obligation-hyp-list
            • Svtv*-output-alist
            • Svtv*-input-alist
            • Svtv-probealist
            • Svtv-override-triplemap
            • Svtv-cyclephaselist
            • Svex/index-maybenat-alist
            • Svex-context-alist
            • Segment-driver-map
            • Rangemap
            • Fnsym-svexlistlist-alist
            • Tmp-occ-alist
            • Svl-module-alist
            • Svexl-node-alist
            • Occ-name-alist
            • Integerp-of-svex-extn-list
            • Alias-alist
            • Special-char-alist
            • Fty-info-alist
            • Bfr-updates
            • Term-equivs
            • Term-bvars
            • Sig-table
            • Fn-indices
            • Fgl-function-mode-alist
            • Ctrex-ruletable
            • Constraint-db
            • Congruence-rule-table
            • Cgraph-derivstates
            • Cgraph-alist
            • Cgraph
            • Casesplit-alist
            • Truthmap
            • Named-lit-list-map
            • Axi-map
            • Nth-equiv
            • Faig-fix-equiv
            • Vl-string/int-alist
            • Vl-reservedtable
            • Vl-echarlist
            • Vl-ctxexprlist
            • Vl-coredatatype-infolist
            • Vl-usertypes
            • Vl-coredatatype-infolist
            • Proof-obligation-list
            • Use-set-summaries
            • Svtv-rev-probealist
            • Svex/index-nat-alist
            • Svex/index-key-alist
            • Svex-key-alist
            • Svex-envlist
            • Svar-widths
            • Svar-width-map
            • Svar-splittab
            • Svar-proplist
            • Svar-key-alist
            • Rsh-of-concat-alist
            • Path-alist
            • Name-alist
            • Address-alist
            • Width-of-svex-extn-list
            • Svl-occ-alist
            • Svex-to-natp-alist
            • Symbol-string-alist
            • Symbol-integer-alist
            • Sym-nat-alist
            • String-string-alist
            • Fty-types
            • Fty-field-alist
            • Any-table
            • Obj-alist
            • Nat-nat-alist
            • Constraint-instancelist
            • Congruence-rulelist
            • Calist
            • Bvar-db-consistency-errorlist
            • Var-counts-alist
            • Pseudo-var-list
            • Equiv-contextslist
            • Nat-val-alistp
            • Id-neg-alist
            • String-keyed-alist-p
            • Snippet-table
            • Snippet-mismatch-list
            • Vl-reportcardkeylist
            • Partsumlist
            • Partsum-elt
            • Classname/paramslist
            • Vl-reportcardkeylist
            • Vl-locationlist
            • Vl-echarlist
            • Perm4-list
            • Svtv*-phaselist
            • Svtv-override-triplemaplist
            • Svtv-override-triplelist
            • Svtv-override-checklist
            • Svtv-name-lhs-map-list
            • Svex/indexlist
            • Svexlistlist
            • Svex-override-triplelist
            • Svex-contextlist
            • Svarlist-list
            • Svar-widthslist
            • Svar-overridetypelist
            • Svar-override-triplelist
            • Segment-driverlist
            • Rangelist
            • Chase-stack
            • Addresslist
            • 4veclistlist
            • 3col4vecs
            • Occ-name-list
            • Alias-lst
            • Word-list
            • Sig-path-list
            • Function-option-name-lst
            • Any-trace
            • Bfr-varnamelist
            • Aig-varlist
            • Scratch-nontagidxlist
            • Prof-entrylist
            • Interp-st-field-p
            • Fgl-runelist
            • Fgl-rulelist
            • Fgl-object-bindingslist
            • Fgl-congruence-runelist
            • Fgl-binder-runelist
            • Fgl-binder-rulelist
            • Ctrex-rulelist
            • Constraint-tuplelist
            • Cgraph-edgelist
            • Candidate-assigns
            • Rw-pairlist
            • Rewritelist
            • Equiv-contexts
            • Bindinglist
            • Pos-list
            • Obs-sdom-info-list
            • Cutinfolist
            • Bit-list
            • Axi-termlist
            • Axi-litlist
            • Symbol-pseudoterm-alist
            • Symbol-pseudoeventform-alist
            • Inst-list
            • Vl-user-paramsettings-mode-p
            • Svtv-data$c-field-p
            • Ctrex-ruletype-p
            • String-stringlist-alist
            • Ipasir-status-p
            • Fgl-toplevel-sat-check-mode-p
            • Axi-op-p
            • Vl-opacity-p
            • St-hyp-method-p
            • Scratchobj-kind-p
            • Logicman-field-p
            • Bvar-db$c-field-p
            • Env$-field-p
            • Axi
            • *smt-architecture*
            • *vl-directions-kwds*
            • *vl-directions-kwd-alist*
            • Rlp-trees
          • Save
          • Defsection
          • Markup
          • Preprocessor
          • Terminal
          • Emacs-links
          • Defxdoc
          • Katex-integration
          • Constructors
          • Entities
          • Defxdoc+
          • Save-rendered
          • Add-resource-directory
          • Testing
          • Order-subtopics
          • Save-rendered-event
          • Archive-matching-topics
          • Archive-xdoc
          • Xdoc-extend
          • Set-default-parents
          • Missing-parents
          • Defpointer
          • Defxdoc-raw
          • Xdoc-tests
          • Xdoc-prepend
          • Defsection-progn
          • Gen-xdoc-for-file
        • ACL2-doc
        • Recursion-and-induction
        • Loop$-primer
        • Operational-semantics
        • Pointers
        • Doc
        • Documentation-copyright
        • Course-materials
        • Publications
        • Args
        • ACL2-doc-summary
        • Finding-documentation
        • Broken-link
        • Doc-terminal-test-2
        • Doc-terminal-test-1
      • Books
      • Boolean-reasoning
      • Projects
      • Debugging
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Undocumented

    Vcd-pathmap-p

    (vcd-pathmap-p x len) recognizes association lists where every key satisfies anyp and each value satisfies vcd-indexlist-p.

    This is an ordinary defalist.

    Function: vcd-pathmap-p

    (defun vcd-pathmap-p (x len)
      (declare (xargs :guard (natp len)))
      (if (consp x)
          (and (consp (car x))
               (anyp (caar x))
               (vcd-indexlist-p (cdar x) len)
               (vcd-pathmap-p (cdr x) len))
        t))

    Definitions and Theorems

    Function: vcd-pathmap-p

    (defun vcd-pathmap-p (x len)
      (declare (xargs :guard (natp len)))
      (if (consp x)
          (and (consp (car x))
               (anyp (caar x))
               (vcd-indexlist-p (cdar x) len)
               (vcd-pathmap-p (cdr x) len))
        t))

    Theorem: vcd-pathmap-p-of-revappend

    (defthm vcd-pathmap-p-of-revappend
      (equal (vcd-pathmap-p (revappend acl2::x acl2::y)
                            len)
             (and (vcd-pathmap-p (list-fix acl2::x) len)
                  (vcd-pathmap-p acl2::y len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-remove

    (defthm vcd-pathmap-p-of-remove
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (remove acl2::a acl2::x)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-last

    (defthm vcd-pathmap-p-of-last
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (vcd-pathmap-p (last acl2::x) len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-nthcdr

    (defthm vcd-pathmap-p-of-nthcdr
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (vcd-pathmap-p (nthcdr acl2::n acl2::x)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-butlast

    (defthm vcd-pathmap-p-of-butlast
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (vcd-pathmap-p (butlast acl2::x acl2::n)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-update-nth

    (defthm vcd-pathmap-p-of-update-nth
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (iff (vcd-pathmap-p (update-nth acl2::n acl2::y acl2::x)
                                   len)
                    (and (and (consp acl2::y)
                              (anyp (car acl2::y))
                              (vcd-indexlist-p (cdr acl2::y) len))
                         (or (<= (nfix acl2::n) (len acl2::x))
                             (and (consp nil)
                                  (anyp (car nil))
                                  (vcd-indexlist-p (cdr nil) len))))))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-repeat

    (defthm vcd-pathmap-p-of-repeat
      (iff (vcd-pathmap-p (repeat acl2::n acl2::x)
                          len)
           (or (and (consp acl2::x)
                    (anyp (car acl2::x))
                    (vcd-indexlist-p (cdr acl2::x) len))
               (zp acl2::n)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-take

    (defthm vcd-pathmap-p-of-take
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (iff (vcd-pathmap-p (take acl2::n acl2::x)
                                   len)
                    (or (and (consp nil)
                             (anyp (car nil))
                             (vcd-indexlist-p (cdr nil) len))
                        (<= (nfix acl2::n) (len acl2::x)))))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-union-equal

    (defthm vcd-pathmap-p-of-union-equal
      (equal (vcd-pathmap-p (union-equal acl2::x acl2::y)
                            len)
             (and (vcd-pathmap-p (list-fix acl2::x) len)
                  (vcd-pathmap-p (double-rewrite acl2::y)
                                 len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-intersection-equal-2

    (defthm vcd-pathmap-p-of-intersection-equal-2
      (implies (vcd-pathmap-p (double-rewrite acl2::y)
                              len)
               (vcd-pathmap-p (intersection-equal acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-intersection-equal-1

    (defthm vcd-pathmap-p-of-intersection-equal-1
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (vcd-pathmap-p (intersection-equal acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-set-difference-equal

    (defthm vcd-pathmap-p-of-set-difference-equal
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (set-difference-equal acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-set-equiv-congruence

    (defthm vcd-pathmap-p-set-equiv-congruence
      (implies (set-equiv acl2::x acl2::y)
               (equal (vcd-pathmap-p acl2::x len)
                      (vcd-pathmap-p acl2::y len)))
      :rule-classes :congruence)

    Theorem: vcd-pathmap-p-when-subsetp-equal

    (defthm vcd-pathmap-p-when-subsetp-equal
      (and (implies (and (subsetp-equal acl2::x acl2::y)
                         (vcd-pathmap-p acl2::y len))
                    (vcd-pathmap-p acl2::x len))
           (implies (and (vcd-pathmap-p acl2::y len)
                         (subsetp-equal acl2::x acl2::y))
                    (vcd-pathmap-p acl2::x len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-rcons

    (defthm vcd-pathmap-p-of-rcons
      (iff (vcd-pathmap-p (acl2::rcons acl2::a acl2::x)
                          len)
           (and (and (consp acl2::a)
                     (anyp (car acl2::a))
                     (vcd-indexlist-p (cdr acl2::a) len))
                (vcd-pathmap-p (list-fix acl2::x) len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-rev

    (defthm vcd-pathmap-p-of-rev
      (equal (vcd-pathmap-p (rev acl2::x) len)
             (vcd-pathmap-p (list-fix acl2::x) len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-duplicated-members

    (defthm vcd-pathmap-p-of-duplicated-members
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (duplicated-members acl2::x)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-difference

    (defthm vcd-pathmap-p-of-difference
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (difference acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-intersect-2

    (defthm vcd-pathmap-p-of-intersect-2
      (implies (vcd-pathmap-p acl2::y len)
               (vcd-pathmap-p (intersect acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-intersect-1

    (defthm vcd-pathmap-p-of-intersect-1
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (intersect acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-union

    (defthm vcd-pathmap-p-of-union
      (iff (vcd-pathmap-p (union acl2::x acl2::y)
                          len)
           (and (vcd-pathmap-p (sfix acl2::x) len)
                (vcd-pathmap-p (sfix acl2::y) len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-mergesort

    (defthm vcd-pathmap-p-of-mergesort
      (iff (vcd-pathmap-p (mergesort acl2::x) len)
           (vcd-pathmap-p (list-fix acl2::x) len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-delete

    (defthm vcd-pathmap-p-of-delete
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (delete acl2::k acl2::x)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-insert

    (defthm vcd-pathmap-p-of-insert
      (iff (vcd-pathmap-p (insert acl2::a acl2::x)
                          len)
           (and (vcd-pathmap-p (sfix acl2::x) len)
                (and (consp acl2::a)
                     (anyp (car acl2::a))
                     (vcd-indexlist-p (cdr acl2::a) len))))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-sfix

    (defthm vcd-pathmap-p-of-sfix
      (iff (vcd-pathmap-p (sfix acl2::x) len)
           (or (vcd-pathmap-p acl2::x len)
               (not (setp acl2::x))))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-list-fix

    (defthm vcd-pathmap-p-of-list-fix
      (equal (vcd-pathmap-p (list-fix acl2::x) len)
             (vcd-pathmap-p acl2::x len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-append

    (defthm vcd-pathmap-p-of-append
      (equal (vcd-pathmap-p (append acl2::a acl2::b)
                            len)
             (and (vcd-pathmap-p acl2::a len)
                  (vcd-pathmap-p acl2::b len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-when-not-consp

    (defthm vcd-pathmap-p-when-not-consp
      (implies (not (consp acl2::x))
               (vcd-pathmap-p acl2::x len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-cdr-when-vcd-pathmap-p

    (defthm vcd-pathmap-p-of-cdr-when-vcd-pathmap-p
      (implies (vcd-pathmap-p (double-rewrite acl2::x)
                              len)
               (vcd-pathmap-p (cdr acl2::x) len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-cons

    (defthm vcd-pathmap-p-of-cons
      (equal (vcd-pathmap-p (cons acl2::a acl2::x)
                            len)
             (and (and (consp acl2::a)
                       (anyp (car acl2::a))
                       (vcd-indexlist-p (cdr acl2::a) len))
                  (vcd-pathmap-p acl2::x len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-make-fal

    (defthm vcd-pathmap-p-of-make-fal
      (implies (and (vcd-pathmap-p acl2::x len)
                    (vcd-pathmap-p acl2::y len))
               (vcd-pathmap-p (make-fal acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-indexlist-p-of-cdr-when-member-equal-of-vcd-pathmap-p

    (defthm vcd-indexlist-p-of-cdr-when-member-equal-of-vcd-pathmap-p
      (and (implies (and (vcd-pathmap-p acl2::x len)
                         (member-equal acl2::a acl2::x))
                    (vcd-indexlist-p (cdr acl2::a) len))
           (implies (and (member-equal acl2::a acl2::x)
                         (vcd-pathmap-p acl2::x len))
                    (vcd-indexlist-p (cdr acl2::a) len)))
      :rule-classes ((:rewrite)))

    Theorem: anyp-of-car-when-member-equal-of-vcd-pathmap-p

    (defthm anyp-of-car-when-member-equal-of-vcd-pathmap-p
      (and (implies (and (vcd-pathmap-p acl2::x len)
                         (member-equal acl2::a acl2::x))
                    (anyp (car acl2::a)))
           (implies (and (member-equal acl2::a acl2::x)
                         (vcd-pathmap-p acl2::x len))
                    (anyp (car acl2::a))))
      :rule-classes ((:rewrite)))

    Theorem: consp-when-member-equal-of-vcd-pathmap-p

    (defthm consp-when-member-equal-of-vcd-pathmap-p
      (implies (and (vcd-pathmap-p acl2::x len)
                    (member-equal acl2::a acl2::x))
               (consp acl2::a))
      :rule-classes
      ((:rewrite :backchain-limit-lst (0 0))
       (:rewrite :backchain-limit-lst (0 0)
                 :corollary (implies (if (member-equal acl2::a acl2::x)
                                         (vcd-pathmap-p acl2::x len)
                                       'nil)
                                     (consp acl2::a)))))

    Theorem: vcd-indexlist-p-of-cdr-of-assoc-when-vcd-pathmap-p

    (defthm vcd-indexlist-p-of-cdr-of-assoc-when-vcd-pathmap-p
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-indexlist-p (cdr (assoc-equal acl2::k acl2::x))
                                len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-fast-alist-clean

    (defthm vcd-pathmap-p-of-fast-alist-clean
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-pathmap-p (fast-alist-clean acl2::x)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-hons-shrink-alist

    (defthm vcd-pathmap-p-of-hons-shrink-alist
      (implies (and (vcd-pathmap-p acl2::x len)
                    (vcd-pathmap-p acl2::y len))
               (vcd-pathmap-p (hons-shrink-alist acl2::x acl2::y)
                              len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-pathmap-p-of-hons-acons

    (defthm vcd-pathmap-p-of-hons-acons
      (equal (vcd-pathmap-p (hons-acons acl2::a acl2::n acl2::x)
                            len)
             (and (anyp acl2::a)
                  (vcd-indexlist-p acl2::n len)
                  (vcd-pathmap-p acl2::x len)))
      :rule-classes ((:rewrite)))

    Theorem: vcd-indexlist-p-of-cdr-of-hons-assoc-equal-when-vcd-pathmap-p

    (defthm
          vcd-indexlist-p-of-cdr-of-hons-assoc-equal-when-vcd-pathmap-p
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-indexlist-p (cdr (hons-assoc-equal acl2::k acl2::x))
                                len))
      :rule-classes ((:rewrite)))

    Theorem: vcd-indexlist-p-of-cdar-when-vcd-pathmap-p

    (defthm vcd-indexlist-p-of-cdar-when-vcd-pathmap-p
      (implies (vcd-pathmap-p acl2::x len)
               (vcd-indexlist-p (cdar acl2::x) len))
      :rule-classes ((:rewrite)))

    Theorem: anyp-of-caar-when-vcd-pathmap-p

    (defthm anyp-of-caar-when-vcd-pathmap-p
      (implies (vcd-pathmap-p acl2::x len)
               (anyp (caar acl2::x)))
      :rule-classes ((:rewrite)))