diff --git a/arraycontext/context.py b/arraycontext/context.py
index 31ceb4083a574be3e3b2b006fae207e204135769..379c8e92d8aefb1b0c5cf23b8b485314029b2bef 100644
--- a/arraycontext/context.py
+++ b/arraycontext/context.py
@@ -361,6 +361,14 @@ class ArrayContext(ABC):
     def supports_nonscalar_broadcasting(self):
         pass
 
+    @abstractproperty
+    def permits_advanced_indexing(self):
+        """
+        *True* only if the arrays support :mod:`numpy`'s advanced indexing
+        semantics.
+        """
+        pass
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/arraycontext/impl/pyopencl/__init__.py b/arraycontext/impl/pyopencl/__init__.py
index cd9c02a2f963583f84930c98e0ada4c688344795..18836ef25b33e9ad1547a2f85ff73b0946a9b0be 100644
--- a/arraycontext/impl/pyopencl/__init__.py
+++ b/arraycontext/impl/pyopencl/__init__.py
@@ -282,6 +282,10 @@ class PyOpenCLArrayContext(ArrayContext):
     def supports_nonscalar_broadcasting(self):
         return False
 
+    @property
+    def permits_advanced_indexing(self):
+        return False
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/arraycontext/impl/pytato/__init__.py b/arraycontext/impl/pytato/__init__.py
index 0f5ad12f1147ca2cb19a6ee3ce6dafd9fc0e393a..963143096bd9bad9f0e6a85460acb4db3faa3b8a 100644
--- a/arraycontext/impl/pytato/__init__.py
+++ b/arraycontext/impl/pytato/__init__.py
@@ -231,3 +231,7 @@ class PytatoPyOpenCLArrayContext(ArrayContext):
     @property
     def supports_nonscalar_broadcasting(self):
         return True
+
+    @property
+    def permits_advanced_indexing(self):
+        return True