# Revision history [back]

The thing to understand is that the subs method work at the level of the expression tree : when the pattern is found in the tree, it is replaced.

For example, 2*(a + b) is represented as the following tree:

*
├── 2
└── +
├── a
└── b


However, the addition is not considered as a binary operation, but as an operation of arbitrary arity, hence 2*(a + b + c) is not represented as

*
├── 2
└── +
├── a
└── +
├── b
└── c


but as

*
├── 2
└── +
├── a
├── b
└── c


This implies that a+b is not a subtree of a+b+c.

In particular, you have to define two different rules to replace alpha_1^2 + beta_1^2 with 1 - gamma_1^2 and alpha_1^2 + beta_1^2 + gamma_1^2 with 1.

In terms of code, the previous explanations translate to:

sage: dkkr1.subs(alpha_1^2 + beta_1^2 == 1-gamma_1^2, alpha_1^2 + beta_1^2 + gamma_1^2 == 1)