public class Valutazione {
  public static boolean valuta(Espressione e, Assegnazione a) {
    if (e instanceof Atomo) 
      return a.valore(((Atomo)e).variabile());
    else if (e instanceof Not) 
      return !valuta(((Not)e).operando(), a);
    else if (e instanceof And)
      return 
        valuta(((And)e).operando1(), a) && 
        valuta(((And)e).operando2(), a);
    else //  (e instanceof Or)
      return
        valuta(((Or)e).operando1(), a) || 
        valuta(((Or)e).operando2(), a);
  }
}
