diff --git a/arraycontext/context.py b/arraycontext/context.py
index 838f9692bd261cc4c7e5e593fc941f3346a18976..495dcff5b9907eda5216f67e00509a01483c0f3c 100644
--- a/arraycontext/context.py
+++ b/arraycontext/context.py
@@ -103,7 +103,7 @@ THE SOFTWARE.
 """
 
 from typing import Sequence, Union
-from abc import ABC, abstractmethod
+from abc import ABC, abstractmethod, abstractproperty
 
 import numpy as np
 from pytools import memoize_method
@@ -349,6 +349,11 @@ class ArrayContext(ABC):
             "setup-only" array context "leaks" into the application.
         """
 
+    # undocumented for now
+    @abstractproperty
+    def permits_inplace_modification(self):
+        pass
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/arraycontext/impl/pyopencl.py b/arraycontext/impl/pyopencl.py
index 93610306f70ab10aa7e0ebf9a4a153e6850a5453..6d8cf758d2792fc9ef4e3baff19e6ce19584d02e 100644
--- a/arraycontext/impl/pyopencl.py
+++ b/arraycontext/impl/pyopencl.py
@@ -436,6 +436,9 @@ class PyOpenCLArrayContext(ArrayContext):
     def clone(self):
         return type(self)(self.queue, self.allocator, self._wait_event_queue_length)
 
+    def permits_inplace_modification(self):
+        return True
+
 # }}}
 
 # vim: foldmethod=marker