package G4ip;import java.util.Vector;import G4ip.Form.*;/** Context acts as a multiset.<p> * Typical contexts in logical rules are Gamma, Delta, etc. * @author Christian Urban */public class Context extends Vector { public Context() { super(); } public Context(Context init_context) { super(); for (int i=0;i<init_context.size();i++) { addElement(init_context.elementAt(i)); } } /** should be toString, but this is a "final" method in Vector */ public String makeString() { String s = new String(); int i; // size()-1 because the last formula for (i=0;i<size()-1;i++) { // should be printed without a comma s=s.concat(elementAt(i).toString()); s=s.concat(", "); } if (size() > 0) { // add last formula s=s.concat(elementAt(i).toString()); } return s; } /** returns a context with one additional formula at the beginning * @param new_formula a formula */ public Context add(Form new_formula) { Context new_c = new Context(this); new_c.insertElementAt(new_formula,0); return new_c; } /** returns a context with two additional formulae at the beginning * @param new_formula1,new_formula2 two formulae */ public Context add(Form new_formula1, Form new_formula2) { Context new_c = new Context(this); new_c.insertElementAt(new_formula1,0); new_c.insertElementAt(new_formula2,0); return new_c; } /** tests whether a context contains a specific atom * @param a a formula */ public boolean includes(Form a) { if (a instanceof Atm) { for (int i=0;i<size();i++) { switch((Form)elementAt(i)) { case Atm(String c): if (c.compareTo(((Atm)a).c) == 0) return true; break; } } } return false; }}