## WeightInherit

Make object inherit weights from child nodes

Indicates that the object inherits all weights of its child nodes. The
label indicates which weights are inherited; use `all`to inherit all weights. The type of inheritance determines whether weights of the child nodes should be added or multiplied. Additive weight inheritance is used to assign a weight to sum-like objects. For example, if we declare

f{#}::WeightInherit(label=all, type=Additive);
A::Weight(label=field, value=3);

\(\displaystyle{}\text{Attached property WeightInherit to }f\left(\#\right).\)

\(\displaystyle{}\text{Attached property Weight to }A.\)

then the expression

`f{A}{A}`

has weight 3. This is what would
happen if '`f`

' would be a sum: the weight of the sum is the same
as the weight of the terms (and is only defined if the weight of the
all terms is equal).
Multiplicative weight inheritance is used to assign a weight to
product-like objects. For example, if we declareg{#}::WeightInherit(label=all, type=Multiplicative);
B::Weight(label=field, value=3);

\(\displaystyle{}\text{Attached property WeightInherit to }g\left(\#\right).\)

\(\displaystyle{}\text{Attached property Weight to }B.\)

then the expression

`g{B}{B}`

has weight 6. This is what would
happen if '`g`

' would be a product: the weight of the product is the same
as the sum of the weights of the factors.
Terms can be selected based on their weight by using the
`keep_weight`

or `drop_weight`

algorithms.