Prover/Contexts.pizza
changeset 96 907b1fff5637
equal deleted inserted replaced
95:345dd18f020e 96:907b1fff5637
       
     1 package G4ip;
       
     2 
       
     3 import java.util.Vector;
       
     4 import G4ip.Form.*;
       
     5 
       
     6 /** Context acts as a multiset.<p>
       
     7   * Typical contexts in logical rules are Gamma, Delta, etc.
       
     8   * @author      Christian Urban
       
     9   */
       
    10 public class Context extends Vector {
       
    11   
       
    12   public Context() { super(); }
       
    13 
       
    14   public Context(Context init_context) {
       
    15     super();
       
    16     for (int i=0;i<init_context.size();i++) {
       
    17       addElement(init_context.elementAt(i));
       
    18     }
       
    19   }
       
    20 
       
    21   /** should be toString, but this is a "final" method in Vector 
       
    22     */
       
    23   public String makeString() {
       
    24     String s = new String();
       
    25     int i;                      // size()-1 because the last formula
       
    26     for (i=0;i<size()-1;i++) {  // should be printed without a comma
       
    27       s=s.concat(elementAt(i).toString());
       
    28       s=s.concat(", ");
       
    29     }
       
    30     if (size() > 0) {           // add last formula 
       
    31       s=s.concat(elementAt(i).toString()); 
       
    32     }
       
    33     return s;
       
    34   }
       
    35 
       
    36   /** returns a context with one additional formula at the beginning 
       
    37     * @param   new_formula    a formula
       
    38     */
       
    39   public Context add(Form new_formula) {
       
    40     Context new_c = new Context(this);
       
    41     new_c.insertElementAt(new_formula,0);
       
    42     return new_c;
       
    43   }
       
    44 
       
    45   /** returns a context with two additional formulae at the beginning 
       
    46     * @param new_formula1,new_formula2    two formulae
       
    47     */
       
    48   public Context add(Form new_formula1, Form new_formula2) {
       
    49     Context new_c = new Context(this);
       
    50     new_c.insertElementAt(new_formula1,0);
       
    51     new_c.insertElementAt(new_formula2,0);
       
    52     return new_c;
       
    53   }
       
    54 
       
    55   /** tests whether a context contains a specific atom 
       
    56     * @param a a formula
       
    57     */
       
    58   public boolean includes(Form a) {
       
    59     if (a instanceof Atm) {
       
    60       for (int i=0;i<size();i++) {
       
    61         switch((Form)elementAt(i)) {
       
    62         case Atm(String c):
       
    63           if (c.compareTo(((Atm)a).c) == 0) return true; break;
       
    64         }
       
    65       }
       
    66     }
       
    67     return false;
       
    68   }
       
    69 
       
    70 }