def matches(pattern, expr, repl_dict={}, evaluate=False): # this method needs a cleanup. #print "? :",pattern, expr, repl_dict, evaluate #if repl_dict: # return repl_dict for p,v in repl_dict.items(): if p==pattern: if v==expr: return repl_dict return None assert isinstance(pattern, Derivative) if isinstance(expr, Derivative): if len(expr.symbols) == len(pattern.symbols): #print "MAYBE:",pattern, expr, repl_dict, evaluate return Basic.matches(pattern, expr, repl_dict, evaluate) #print "NONE:",pattern, expr, repl_dict, evaluate return None #print pattern, expr, repl_dict, evaluate stop if pattern.nargs is not None: if pattern.nargs != expr.nargs: return None repl_dict = repl_dict.copy() repl_dict[pattern] = expr return repl_dict
def matches(pattern, expr, repl_dict={}, evaluate=False): if evaluate: pat = pattern for old, new in repl_dict.items(): pat = pat.subs(old, new) if pat != pattern: return pat.matches(expr, repl_dict) expr = _sympify(expr) b, e = expr.as_base_exp() # special case, pattern = 1 and expr.exp can match to 0 if expr is S.One: d = repl_dict.copy() d = pattern.exp.matches(S.Zero, d, evaluate=False) if d is not None: return d d = repl_dict.copy() d = pattern.base.matches(b, d, evaluate=False) if d is None: return None d = pattern.exp.matches(e, d, evaluate=True) if d is None: return Basic.matches(pattern, expr, repl_dict, evaluate) return d
def matches(pattern, expr, repl_dict={}, evaluate=False): expr = sympify(expr) if pattern.is_commutative and expr.is_commutative: return AssocOp._matches_commutative(pattern, expr, repl_dict, evaluate) # todo for commutative parts, until then use the default matches method for non-commutative products return Basic.matches(pattern, expr, repl_dict, evaluate)
def matches(pattern, expr, repl_dict={}, evaluate=False): # this method needs a cleanup. #print "? :",pattern, expr, repl_dict, evaluate #if repl_dict: # return repl_dict for p, v in repl_dict.items(): if p == pattern: if v == expr: return repl_dict return None assert isinstance(pattern, Derivative) if isinstance(expr, Derivative): if len(expr.symbols) == len(pattern.symbols): #print "MAYBE:",pattern, expr, repl_dict, evaluate return Basic.matches(pattern, expr, repl_dict, evaluate) #print "NONE:",pattern, expr, repl_dict, evaluate return None #print pattern, expr, repl_dict, evaluate stop if pattern.nargs is not None: if pattern.nargs != expr.nargs: return None repl_dict = repl_dict.copy() repl_dict[pattern] = expr return repl_dict
def matches(pattern, expr, repl_dict={}, evaluate=False): Basic.matches.__doc__ if evaluate: pat = pattern for old,new in repl_dict.items(): pat = pat.subs(old, new) if pat!=pattern: return pat.matches(expr, repl_dict) expr = Basic.sympify(expr) b, e = expr.as_base_exp() # special case, pattern = 1 and expr.exp can match to 0 if isinstance(expr, Basic.One): d = repl_dict.copy() d = pattern.exp.matches(Basic.Integer(0), d, evaluate=False) if d is not None: return d d = repl_dict.copy() d = pattern.base.matches(b, d, evaluate=False) if d is None: return None d = pattern.exp.matches(e, d, evaluate=True) if d is None: return Basic.matches(pattern, expr, repl_dict, evaluate) return d
def matches(pattern, expr, repl_dict={}, evaluate=False): if evaluate: pat = pattern for old,new in repl_dict.items(): pat = pat.subs(old, new) if pat!=pattern: return pat.matches(expr, repl_dict) expr = _sympify(expr) b, e = expr.as_base_exp() # special case, pattern = 1 and expr.exp can match to 0 if expr is S.One: d = repl_dict.copy() d = pattern.exp.matches(S.Zero, d, evaluate=False) if d is not None: return d d = repl_dict.copy() d = pattern.base.matches(b, d, evaluate=False) if d is None: return None d = pattern.exp.matches(e, d, evaluate=True) if d is None: return Basic.matches(pattern, expr, repl_dict, evaluate) return d
def matches(self, expr, repl_dict={}, evaluate=False): # this method needs a cleanup. if self in repl_dict: if repl_dict[self] == expr: return repl_dict else: return None if isinstance(expr, Derivative): if len(expr.symbols) == len(self.symbols): # print "MAYBE:",self, expr, repl_dict, evaluate return Basic.matches(self, expr, repl_dict, evaluate) # print "NONE:",self, expr, repl_dict, evaluate return None # print self, expr, repl_dict, evaluate stop if self.nargs is not None: if self.nargs != expr.nargs: return None repl_dict = repl_dict.copy() repl_dict[self] = expr return repl_dict
def matches(self, expr, repl_dict={}, evaluate=False): if evaluate: return self.subs(repl_dict).matches(expr, repl_dict) expr = _sympify(expr) b, e = expr.as_base_exp() # special case, pattern = 1 and expr.exp can match to 0 if expr is S.One: d = repl_dict.copy() d = self.exp.matches(S.Zero, d) if d is not None: return d d = repl_dict.copy() d = self.base.matches(b, d) if d is None: return None d = self.exp.subs(d).matches(e, d) if d is None: return Basic.matches(self, expr, repl_dict, evaluate) return d