def there_is_a_chance_to_apply_to(self, expression: Expression): contains_u = False contains_du = False for variable in expression.variables: if variable.tag == 'u': contains_u = True if variable.tag == 'du': contains_du = True return not expression.contains_integral() and contains_du and contains_u
def solution_tree(self, expression: Expression) -> SolutionTreeNode: logger.info("get solution tree for: " + expression.to_string()) theorems = [] if expression.contains_derivative(): theorems += DerivativeTheorems.get_all() if expression.contains_integral(): theorems += IntegrateTheorems.get_all() return self.solution_tree_for(expression, theorems, Theorem('none', None, None, {}))