/// A value associated with a structural stack path.
///
/// Weights use ordinary equality to identify values that can be factored over
/// one shared stack language. [`Weight::join`] must be associative, commutative,
/// and idempotent. These
/// laws make the extensional meaning independent of representation choices:
///
/// - `(a ⋁ b) ⋁ c = a ⋁ (b ⋁ c)`
/// - `a ⋁ b = b ⋁ a`
/// - `a ⋁ a = a`