evaluate substitution (Variable x) = 
    case lookup x substitution of
      Just v -> v
evaluate substitution (Variable x) = 
    case lookup x substitution of
      Just v -> v
evaluate substitution (Variable x) = 
    case lookup x substitution of
      Just v -> v