Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00038 package theoremprover;
00039 
00040 import java.lang.*;    
00041 import java.util.*;
00042 import theoremprover.*;
00043 
00044 
00045 public class LRule extends LObject
00046 {
00047     
00048 
00049     public ArrayList tail;
00050     public LObject head;
00051 
00052     
00053 
00054     LRule()
00055     {
00056         tail = new ArrayList();
00057         head = null;
00058     }
00059 
00060     LRule(ArrayList v, LObject h)
00061     {
00062         tail = v;
00063         head = h;
00064     }
00065 
00066     
00067 
00068     public String toString()
00069     {
00070         StringBuffer str = new StringBuffer();
00071         Iterator e = tail.iterator();
00072         int i = tail.size();
00073         while (e.hasNext()) {
00074             str.append((e.next()).toString());
00075             i--;
00076             if (i>0) { str.append(", ");}
00077         }
00078         str.append(" -> ");
00079         str.append(head.toString());
00080         str.append(".");
00081         return str.toString();
00082     }
00083 
00084   public PropositionalTheoremProver asPropositionalSentence()
00085   {
00086     return null;
00087   }
00088 
00089 
00090   public PropositionalTheoremProver 
00091     asPropositionalSentence(
00092                             PropositionalTheoremProver tp, 
00093                             Hashtable pd)
00094   {
00095     String str;
00096     Proposition p;
00097     ArrayList ant = new ArrayList();
00098     Iterator e = tail.iterator();
00099 
00100     while (e.hasNext()) {
00101       str = (e.next()).toString();
00102       if (pd.containsKey(str)) {
00103         p = (Proposition)pd.get(str);
00104       } else {
00105         p = new Proposition();
00106         p.setIdentifier(str);
00107         pd.put(str,p);
00108         tp.addProposition(p);
00109       }
00110       ant.add(p);
00111     }
00112     str = head.toString();
00113     if (str.equalsIgnoreCase("false")) {
00114       p = tp.contradiction();
00115     } else if (pd.containsKey(str)) {
00116       p = (Proposition)pd.get(str);
00117     } else {
00118       p = new Proposition();
00119       p.setIdentifier(str);
00120       pd.put(str,p);
00121       tp.addProposition(p);
00122     }
00123     tp.add(ant,p);
00124     return tp;
00125   }
00126 
00127 
00128   public ABTheoremProver asABPropositionalSentence()
00129   {
00130     return null;
00131   }
00132 
00133 
00134   public ABTheoremProver 
00135     asABPropositionalSentence(
00136                             ABTheoremProver tp, 
00137                             Hashtable pd)
00138   {
00139     String str;
00140     Assumption p;
00141     ArrayList ant = new ArrayList();
00142     Iterator e = tail.iterator();
00143 
00144     while (e.hasNext()) {
00145       str = (e.next()).toString();
00146       if (pd.containsKey(str)) {
00147         p = (Assumption)pd.get(str);
00148       } else {
00149         if ((str.length() > 0) &&
00150             ((Character.isUpperCase(str.charAt(0))) || (str.charAt(0) == '!'))) {
00151             
00152             p = new Assumption();
00153             p.setIdentifier(str);
00154             if (!tp.addAssumption(p)) return null;
00155             pd.put(str,p);
00156         } else {
00157           p = new Proposition();
00158           tp.addProposition((Proposition)p);    
00159           p.setIdentifier(str);
00160           pd.put(str,(Proposition)p);
00161         }
00162       }
00163       ant.add(p);
00164     }
00165     str = head.toString();
00166 
00167     if ((str.length() > 0) && (Character.isUpperCase(str.charAt(0)))) {
00168       return null; 
00169     }
00170 
00171     if (str.equalsIgnoreCase("false")) {
00172       p = tp.contradiction();
00173     } else if (pd.containsKey(str)) {
00174       p = (Proposition)pd.get(str);
00175     } else {
00176       p = new Proposition();
00177       p.setIdentifier(str);
00178       pd.put(str,(Proposition)p);
00179       tp.addProposition((Proposition)p);
00180     }
00181     tp.add(ant,(Proposition)p);
00182     return tp;
00183   }
00184 
00185 
00186     public ArrayList allPredicates(String str, int i, ArrayList v)
00187     {
00188         Iterator e = tail.iterator();
00189         while (e.hasNext()) {
00190             v = ((LPredicate)(e.next())).allPredicates(str,i,v);
00191         }
00192         v = head.allPredicates(str,i,v);
00193         return v;
00194     }
00195 }