diff --git a/arraycontext/context.py b/arraycontext/context.py
index d787471b1f05fd92b6196cbd236f06eddb6e4a57..08597876ce07d2857b86ef904282fc062afa14b1 100644
--- a/arraycontext/context.py
+++ b/arraycontext/context.py
@@ -103,7 +103,7 @@ THE SOFTWARE.
 """
 
 from typing import Sequence, Union, Callable, Any
-from abc import ABC, abstractmethod
+from abc import ABC, abstractmethod, abstractproperty
 
 import numpy as np
 from pytools import memoize_method
@@ -370,6 +370,11 @@ class ArrayContext(ABC):
         """
         return f
 
+    # 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 4de6d0dbaa947a54e4da62a15eec1b65b527cbf5..67374ca11ad66ca69cddcd2fc9b56447369a77e7 100644
--- a/arraycontext/impl/pyopencl.py
+++ b/arraycontext/impl/pyopencl.py
@@ -423,6 +423,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