Files
app-store-optimization/skills/loki-mode/benchmarks/results/2026-01-05-10-37-54/swebench-loki-patches/sympy__sympy-12419.patch

37 lines
1.4 KiB
Diff

# sympy__sympy-12419
# Loki Mode Multi-Agent Patch
# Attempts: 1
Based on the architect's analysis and the existing patches, I can see the issue. The simpler approach (second patch) just returns `KroneckerDelta(i, j)` directly, which will handle both symbolic and numeric cases correctly because `KroneckerDelta` itself evaluates to 1 or 0 for concrete equal/unequal indices.
However, the first approach is more explicit about handling concrete cases for efficiency. The architect's analysis suggests checking `Eq(i, j)` for literal True/False cases.
Let me generate the proper patch based on the architect's recommendation:
--- a/sympy/matrices/expressions/matexpr.py
+++ b/sympy/matrices/expressions/matexpr.py
@@ -1,6 +1,7 @@
from __future__ import print_function, division
from functools import wraps
+from sympy.functions.special.tensor_functions import KroneckerDelta
from sympy.core import S, Symbol, Tuple, Integer, Basic, Expr
from sympy.core.decorators import call_highest_priority
@@ -278,10 +279,11 @@ class Identity(MatrixExpr):
return self.rows
def _entry(self, i, j):
- if i == j:
- return S.One
- else:
- return S.Zero
+ eq = Eq(i, j)
+ if eq is S.true:
+ return S.One
+ elif eq is S.false:
+ return S.Zero
+ return KroneckerDelta(i, j)
def _eval_transpose(self):
return self