Documentation

Miri.TreeBorrows.RetagPolicy

The permission-selection policy in pinned Miri's NewPermission::new. Rust type/layout facts and interpreter configuration are explicit inputs; this module does not model rustc type queries, pointer checks, or the full retag caller.

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
        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
              • implicitWrites : Bool
              • rustcNoWritable : Bool
              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
                    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
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            Source NewPermission::new policy, with the rustc type queries and #[rustc_no_writable] lookup supplied as finite inputs.

                            None covers both disabled retagging and the source's mutable/Box pinning early return. Other interpreter operations around reborrowing remain outside this policy function.

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

                              The source tb_reborrow closure selecting its permission for a frozen or UnsafeCell byte and constructing the matching accessed/future location state. The freeze-sensitive layout visitor that chooses frozen is a separate hook.

                              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
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      theorem Miri.TreeBorrows.RetagPolicy.shared_cell_starts_unaccessed :
                                      initialLocationState { freezePermission := Permission.Frozen, nonfreezePermission := Permission.Cell, outsidePermission := Permission.Cell, protector := none } false = Except.ok { permission := Permission.Cell, accessed := false, idempotentForeignAccess := IdempotentForeignAccess.Write }
                                      theorem Miri.TreeBorrows.RetagPolicy.unique_reborrow_starts_accessed :
                                      initialLocationState { freezePermission := Permission.Unique, nonfreezePermission := Permission.Unique, outsidePermission := Permission.ReservedFrz false, protector := none } true = Except.ok { permission := Permission.Unique, accessed := true, idempotentForeignAccess := IdempotentForeignAccess.None }