Documentation

Miri.TreeBorrows.Traversal

Finite tree-visitor schedule from pinned Miri tree_borrows/tree_visitor.rs. This models the normal-tree visitation order and the precise local/foreign relation used at each node. A tree is assumed to be a valid finite rooted tree, as it is at Miri's visitor call sites. Allocation ranges, wildcard subtrees, exposed caches, and diagnostics are outside this traversal schedule.

Whether to visit the accessed node's direct children.

Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Ordered parent/child links used by Miri's normal tree visitor.

      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            A finite tree indexed by its node positions.

            Instances For
              Equations
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  One node visit and the access relation passed to the location transition.

                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        Schedule a normal access: access the start and its ancestors first, then visit deferred cousin/child subtrees bottom-up. skipNodes models the source's foreign-only continue callback.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem Miri.TreeBorrows.Tree.TraversalTree.traverse_starts_at_accessed_node (tree : TraversalTree) (start : Nat) (mode : ChildrenVisitMode) (skipNodes : List Nat) :
                          (tree.traverse start mode skipNodes).snd.head? = some { node := start, relatedness := AccessRelatedness.LocalAccess }

                          The source visitor always propagates at the accessed node first.