<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package englishdemo;
import semanticvalues.*;

/**
   Instances represent strict negatives, as expressed by "not",
   possibly emphasized as "not at all".  In some cases, modification
   of such an instance can convert it to instance of another
   semantic class, as in the case of "probably not".
   @author James A. Mason
   @version 1.01 2005 Mar.
 */
public class NegativeSemantics extends ModifiableSemantics
{
   /**
      Attempts to modify an instance by a given modifier,
      converting it to a ProbabilitySemantics instance if
      appropriate.
    */
   public SemanticValue modifyBy(SemanticValue modifier)
   {  if (modifier instanceof ProbabilitySemantics)
      {  ModifiableSemantics result
            = modifyBy((ProbabilitySemantics) modifier);
         if (result == null)
         {  // unsuccessful conversion to ProbabilitySemantics
            result = (NegativeSemantics) clone();
            result = (ModifiableSemantics)
               super.modifyBy("probability", modifier);
         }
         return result;
      }
      return super.modifyBy(modifier);
   }
   /**
      Attempts to modify an instance by a given modifier,
      converting it to a ProbabilitySemantics instance if
      appropriate.
    */
   public SemanticValue modifyBy(String modifierName,
              SemanticValue modifier)
   {  if (modifier instanceof ProbabilitySemantics)
      {  ModifiableSemantics result
            = modifyBy((ProbabilitySemantics) modifier);
         if (result == null)
         {  // unsuccessful conversion to ProbabilitySemantics
            result = (NegativeSemantics) clone();
            result = (ModifiableSemantics)
               super.modifyBy("probability", modifier);
         }
         return result;
      }
      return super.modifyBy(modifierName, modifier);
   }

   protected ProbabilitySemantics modifyBy(ProbabilitySemantics prob)
   {  ProbabilitySemantics result = null;
      int judgment = prob.judgment.value;
      int newJudgment = ProbabilitySemantics.INDEFINITE;
      if (judgment == ProbabilitySemantics.PROBABLE) // "probably not"
         newJudgment = ProbabilitySemantics.UNLIKELY;
      else if (judgment == ProbabilitySemantics.FAIRLY_PROBABLE)
         newJudgment = ProbabilitySemantics.UNLIKELY;
      else if (judgment == ProbabilitySemantics.VERY_PROBABLE)
         // "quite/very probably not"
         newJudgment = ProbabilitySemantics.VERY_UNLIKELY;
      else if (judgment == ProbabilitySemantics.ALMOST_CERTAIN)
         // "almost certainly not"
         newJudgment = ProbabilitySemantics.EXTREMELY_UNLIKELY;
      else if (judgment == ProbabilitySemantics.CERTAIN)
         // "certainly/definitely not"
         newJudgment = ProbabilitySemantics.IMPOSSIBLE;
      if (newJudgment != ProbabilitySemantics.INDEFINITE)
         result = new ProbabilitySemantics(newJudgment);
      return result;
         // null indicates unsuccessful attempt to convert to
         // ProbabilitySemantics.
   }

   /**
      false by default; true for "not at all"
    */
   public boolean extreme = false;

} // end class NegativeSemantics
</pre></body></html>