function bayesian_update(prior, likelihood_given_evidence):
   unnormalized = {h: prior[h] * likelihood_given_evidence[h] for h in prior}

   total = sum(unnormalized.values())
   return {h: unnormalized[h] / total for h in unnormalized} # posterior
 # posterior ∝ prior × likelihood
