docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
Build a JavaScript/TypeScript function that simplifies algebraic expressions with context-aware assumptions about variables.
When simplifying algebraic expressions, different assumptions about variables lead to different results. For example, sqrt(x^2) simplifies to x if x is positive, but to abs(x) in general. Your task is to implement a function that simplifies expressions while respecting variable constraints.
Implement a function simplifyWithContext(expression, variables) that:
real: boolean indicating if the variable is a real numberpositive: boolean indicating if the variable is positivecomplex: boolean indicating if the variable can be complexThe function should handle expressions involving:
// Example 1: Simplify sqrt(x^2) assuming x is positive
simplifyWithContext('sqrt(x^2)', { x: { positive: true } })
// Expected: 'x'
// Example 2: Simplify sqrt(x^2) assuming x is real (but not necessarily positive)
simplifyWithContext('sqrt(x^2)', { x: { real: true } })
// Expected: 'abs(x)'
// Example 3: Simplify sqrt(x^2) for complex x
simplifyWithContext('sqrt(x^2)', { x: { complex: true } })
// Expected: expression involving complex square root logic
// Example 4: Multiple variables with contexts
simplifyWithContext('sqrt(a^2) + sqrt(b^2)', {
a: { positive: true },
b: { real: true }
})
// Expected: 'a + abs(b)'simplifier.js (or simplifier.ts for TypeScript)simplifyWithContext functionFile: simplifier.test.js
import { simplifyWithContext } from './simplifier.js';
// Simplifying sqrt(x^2) with positive x should return x
const result = simplifyWithContext('sqrt(x^2)', { x: { positive: true } });
console.assert(result === 'x', `Expected 'x', got '${result}'`);File: simplifier.test.js
import { simplifyWithContext } from './simplifier.js';
// Simplifying sqrt(x^2) with real x should return abs(x)
const result = simplifyWithContext('sqrt(x^2)', { x: { real: true } });
console.assert(result === 'abs(x)', `Expected 'abs(x)', got '${result}'`);File: simplifier.test.js
import { simplifyWithContext } from './simplifier.js';
// Simplifying expression with multiple variables
const result = simplifyWithContext('sqrt(a^2 + 2*a*b + b^2)', {
a: { positive: true },
b: { positive: true }
});
// Should simplify (a+b)^2 under square root to a+b
console.assert(result === 'a + b', `Expected 'a + b', got '${result}'`);Provides algebraic simplification and expression parsing capabilities.