from math import sqrt
def evaluate_state(state, tolerance=1e-12):
    if type(state) is not list or len(state) != 4 or tolerance <= 0:
        raise ValueError("playground state must contain four amplitudes")
    if any(type(amplitude) not in (int, float, complex) for amplitude in state):
        raise ValueError("amplitudes must be numeric")
    norm = sum(abs(amplitude) ** 2 for amplitude in state)
    odd_probability = abs(state[1]) ** 2 + abs(state[2]) ** 2
    return {"norm": norm, "odd_probability": odd_probability,
            "valid": abs(norm - 1.0) <= tolerance and odd_probability <= tolerance}

bell = [1/sqrt(2), 0.0, 0.0, 1/sqrt(2)]
missing_entangler = [1/sqrt(2), 0.0, 1/sqrt(2), 0.0]
unnormalized = [1.0, 0.0, 0.0, 1.0]
reference_result = evaluate_state(bell)
mutation_result = evaluate_state(missing_entangler)
boundary_result = evaluate_state(unnormalized)
invalid_rejected = False
try:
    evaluate_state([1.0, 0.0])
except ValueError:
    invalid_rejected = True
assert reference_result["valid"] and reference_result["odd_probability"] == 0.0
assert not mutation_result["valid"] and abs(mutation_result["odd_probability"] - 0.5) < 1e-12
assert not boundary_result["valid"] and boundary_result["norm"] == 2.0 and invalid_rejected
print(f"PASS: 87 Bell MVP norm={reference_result['norm']:.1f} mutant_odd={mutation_result['odd_probability']:.1f} boundary_norm={boundary_result['norm']:.1f}")
