Index: fedd/abac-src/rbtm/test/CVS/Entries
===================================================================
--- fedd/abac-src/rbtm/test/CVS/Entries	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/CVS/Entries	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,18 @@
+/EPub.java/1.3/Tue Aug 12 17:56:29 2003//
+/README/1.1/Fri Dec 21 18:46:07 2001//
+/Test.java/1.1/Fri Dec 14 21:11:19 2001//
+/TestEngine.java/1.10/Tue Jul 23 16:50:30 2002//
+/abac.conf/1.4/Mon Jul 29 21:59:35 2002//
+/cred.txt/1.2/Thu Dec 20 20:44:44 2001//
+/frontier-creds.txt/1.1/Fri Dec 21 18:46:07 2001//
+/frontier-desired-oppo-output.txt/1.1/Fri Dec 21 18:46:07 2001//
+/frontier-desired-sens-output.txt/1.1/Fri Dec 21 18:46:07 2001//
+/frontier-desired-simp-output.txt/1.1/Fri Dec 21 18:46:07 2001//
+/frontier-searches.txt/1.1/Fri Dec 21 18:46:07 2001//
+/issuer-tracable.txt/1.1/Fri Dec 21 18:46:07 2001//
+/med-cred.txt/1.1/Thu Dec 20 20:37:11 2001//
+/med.conf/1.2/Wed Feb 13 21:09:05 2002//
+/package.html/1.2/Tue Dec 18 01:38:12 2001//
+/searches.txt/1.1/Thu Dec 20 20:37:11 2001//
+/sensitive.txt/1.1/Fri Dec 21 18:46:07 2001//
+D
Index: fedd/abac-src/rbtm/test/CVS/Repository
===================================================================
--- fedd/abac-src/rbtm/test/CVS/Repository	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/CVS/Repository	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,1 @@
+rbtm/test
Index: fedd/abac-src/rbtm/test/CVS/Root
===================================================================
--- fedd/abac-src/rbtm/test/CVS/Root	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/CVS/Root	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,1 @@
+:ext:jjacobs@src.columbia.sparta.com/cvs/abac
Index: fedd/abac-src/rbtm/test/EPub.java
===================================================================
--- fedd/abac-src/rbtm/test/EPub.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/EPub.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,83 @@
+package edu.stanford.peer.rbtm.test;
+
+import edu.stanford.peer.rbtm.engine.*;
+import edu.stanford.peer.rbtm.credential.*;
+import edu.stanford.peer.rbtm.util.*;
+
+public class EPub 
+{
+    static GraphEngine mgr = new GraphEngine();
+    static Entity alice = new SimpleEntity("Alice");
+    static Entity bob = new SimpleEntity("Bob");
+    static EntityExpression[] parts;
+
+    public static void main(String arg[]) {
+	loadCredentials();
+	performSearches();
+    }
+
+    public static void performSearches() {
+	System.out.println("Credential Manager contains:");
+	System.out.println(mgr);
+	System.out.println("Forward search on " + alice + ":");
+	System.out.println(mgr.forwardSearch(alice));
+	System.out.println("------------------------------------");
+	System.out.println("Backward search on EPub.student:\n");
+	System.out.println(mgr.backwardSearch(new Role("EPub", "student")));
+	System.out.println("Backward search on EOrg.preferred:\n ");
+	System.out.println(mgr.backwardSearch(new Role("EOrg", "preferred")));
+
+	parts = loadRoles();
+	Intersection i = new Intersection();
+	i.and(parts[0]).and(parts[1]);
+	System.out.println("Backward search on " + i + ":\n ");
+	System.out.println(mgr.backwardSearch(i));
+    }
+
+    public static EntityExpression[] loadRoles() {
+	EntityExpression[] parts = new EntityExpression[2];
+	parts[0] = new Role("EPub", "student");
+	parts[1] = new Role("EOrg", "preferred");
+	return parts;
+    }
+    
+    public static void loadCredentials() {
+	SimpleEntity abu  = new SimpleEntity("ABU"),
+	    acm  = new SimpleEntity("ACM"),
+	    bbb  = new SimpleEntity("BBB"),
+	    eOrg = new SimpleEntity("EOrg"),
+ 	    ePub = new SimpleEntity("EPub"),
+	    stateU = new SimpleEntity("StateU");
+	SimpleRoleName stuID = new SimpleRoleName("stuID"),
+	    accredited = new SimpleRoleName("accredited"),
+	    student = new SimpleRoleName("student"),
+	    univ = new SimpleRoleName("university"),
+	    member = new SimpleRoleName("member"),
+	    preferred = new SimpleRoleName("preferred"),
+		 sale = new SimpleRoleName("sale"), 
+	    discount = new SimpleRoleName("spdiscount");
+	Role ePubUniv = new Role(ePub, univ),
+	    acmMember = new Role(acm, member),
+	    abuAccredited = new Role(abu, accredited);
+	LinkedRole ePubUnivStuID = new LinkedRole(ePubUniv, stuID);
+	Intersection u = new Intersection();
+	u.and(new Role(eOrg, preferred)).and(new Role(ePub, student));
+	mgr.addCredential(new StaticCredential(new Role(ePub, sale),
+														new Role(ePub, discount)));
+	mgr.addCredential(new StaticCredential(ePub, discount, u));
+	mgr.addCredential(new StaticCredential(eOrg, preferred, acmMember));
+	mgr.addCredential(new StaticCredential(acmMember, alice));
+	mgr.addCredential(new StaticCredential(acmMember, bob));
+	mgr.addCredential(new StaticCredential(ePub, student, ePubUnivStuID));
+	mgr.addCredential(new StaticCredential(ePubUniv, abuAccredited));
+	mgr.addCredential(new StaticCredential(abuAccredited, stateU));
+	mgr.addCredential(new StaticCredential(stateU, stuID, alice));
+	mgr.addCredential(new StaticCredential(stateU, stuID, bob));
+	//mgr.addCredential(new StaticCredential());
+    }
+
+}
+
+
+
+
Index: fedd/abac-src/rbtm/test/README
===================================================================
--- fedd/abac-src/rbtm/test/README	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/README	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,13 @@
+Input files for testing frontier functions:
+
+frontier-creds.txt -- credentials to use for testing frontier
+frontier-searches.txt -- role expressions from which to perform all three frontier searches
+issuer-tracable.txt -- issuer-tracable role names
+sensitive.txt -- roles Alice considers sensitive
+
+
+Desired output files:
+
+frontier-desired-simp-output.txt 
+frontier-desired-oppo-output.txt
+frontier-desired-sens-output.txt
Index: fedd/abac-src/rbtm/test/Test.java
===================================================================
--- fedd/abac-src/rbtm/test/Test.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/Test.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,189 @@
+package edu.stanford.peer.rbtm;
+
+import java.io.*;
+import java.util.*;
+import edu.stanford.peer.rbtm.engine.*;
+import edu.stanford.peer.rbtm.credential.*;
+import edu.stanford.peer.rbtm.util.*;
+
+public class Test 
+{
+    public static void main(String args[]) throws Exception {
+		//test1();
+		test3();
+        //test3(Integer.parseInt(args[0]), Integer.parseInt(args[1]));
+    }
+
+    static void test1() throws Exception {
+        CredentialManager cs = new CredentialManager();
+        cs.addCredential(new StaticCredential("university", "professors", "university.depts.professors"));
+        cs.addCredential(new StaticCredential("dept_cs", "professors", "mitchell"));
+        cs.addCredential(new StaticCredential("university", "depts", "dept_cs"));
+        System.out.println(cs.toString());
+        System.out.println();
+        cs.removeCredential(new StaticCredential("university", "depts", "dept_cs"));
+        System.out.println(cs.toString());
+        System.out.println();
+
+        Role r = new Role("university", "professors");
+        System.out.println(cs.backwardSearch(r));
+        System.out.println(cs.forwardSearch(new SimpleEntity("mitchell")));
+
+    }
+
+    static void test2() throws Exception {
+	    CredentialManager cs = new CredentialManager();
+	    SimpleEntity 	tony = new SimpleEntity("Tony"),
+	    				carmela = new SimpleEntity("Carmela"),
+	    				melfi = new SimpleEntity("Jennifer Melfi"),
+	    				livia = new SimpleEntity("Livia"),
+	    				junior = new SimpleEntity("Junior"),
+	    				chris = new SimpleEntity("Chris Moltisanti"),
+	    				meadow = new SimpleEntity("Meadow"),
+	    				anthony = new SimpleEntity("Anthony Jr."),
+	    				paulie = new SimpleEntity("Paulie Walnuts"),
+	    				jackie = new SimpleEntity("Jackie Aprile");
+
+	    Role 	tonyWifeRole = new Role(tony, "Wife"),
+	    		tonyFamilyRole = new Role(tony, "Family Members"),
+	    		tonyChildrenRole = new Role(tony, "Children"),
+	    		tonyCrewRole = new Role(tony, "Crew"),
+	    		tonyMotherRole = new Role(tony, "Mother"),
+	    		tonyBossRole = new Role(tony, "Boss"),
+	    		tonyUncleRole = new Role(tony, "Uncle"),
+	    		melfiPatientRole = new Role(melfi, "Patients"),
+	    		melfiPreferredPatientRole = new Role(melfi, "Preferred Patients"),
+	    		chrisBossRole = new Role(chris, "Boss"),
+	    		chrisActingBossRole = new Role(chris, "ActingBoss"),
+	    		chrisGangRole = new Role(chris, "Gang");
+	    
+	    ArrayList tonyCreds = new ArrayList(20);
+	    
+	    tonyCreds.add(new StaticCredential(tonyWifeRole, carmela));
+	    tonyCreds.add(new StaticCredential(tonyFamilyRole, tonyWifeRole));
+	    tonyCreds.add(new StaticCredential(tonyFamilyRole, tonyChildrenRole));
+	    tonyCreds.add(new StaticCredential(tonyChildrenRole, meadow));
+	    tonyCreds.add(new StaticCredential(tonyChildrenRole, anthony));
+	    tonyCreds.add(new StaticCredential(tonyCrewRole, chris));
+	    tonyCreds.add(new StaticCredential(tonyCrewRole, paulie));
+	    tonyCreds.add(new StaticCredential(tonyMotherRole, livia));
+	    tonyCreds.add(new StaticCredential(tonyBossRole, jackie));
+	    tonyCreds.add(new StaticCredential(tonyUncleRole, junior));
+	    // Setting up credentials for toni
+	    cs.addCredentials(tonyCreds); 
+
+	    ArrayList melfiCreds = new ArrayList(5);
+	    melfiCreds.add(new StaticCredential(melfiPatientRole, melfiPreferredPatientRole));
+	    melfiCreds.add(new StaticCredential(melfiPreferredPatientRole, tony));
+	    cs.addCredentials(melfiCreds); 
+
+	    
+	    ArrayList chrisCreds = new ArrayList(5);
+	    cs.addCredential(new StaticCredential(chrisBossRole, tony));
+	    cs.addCredential(new StaticCredential(chrisActingBossRole, tonyBossRole));
+	    cs.addCredential(new StaticCredential(chrisGangRole, new LinkedRole(chrisBossRole, "Crew")));
+
+		System.out.println(cs.toString());
+		System.out.println();
+		System.out.println(cs.forwardSearch(carmela));
+		System.out.println();
+
+		cs.removeCredential(new StaticCredential(chrisBossRole, tony));
+		cs.removeCredential(new StaticCredential(chrisActingBossRole, tonyBossRole));
+
+		cs.addCredential(new StaticCredential(chrisGangRole, new Role("Tony", "Wife")));
+		cs.addCredential(new StaticCredential(new Role("Meadow", "Mother"), new Role("Tony", "Wife")));
+
+		System.out.println(cs.toString());
+		System.out.println();
+		System.out.println(cs.forwardSearch(carmela));
+		System.out.println();
+
+		//System.out.println(cs.forwardSearch(jackie));
+		//System.out.println();
+	}
+	
+	
+	static void test3() throws Exception
+	{
+		CredentialManager store = new CredentialManager();
+
+		store.addCredential(new StaticCredential("sbose", "picturesRead", "sbose.family"));
+		store.addCredential(new StaticCredential("sbose", "picturesWrite", "sbose.family"));
+		store.addCredential(new StaticCredential("sbose", "picturesRead", "sbose.family.friends"));
+		store.addCredential(new StaticCredential("sbose", "picturesRead", "patrick"));
+		store.addCredential(new StaticCredential("sbose", "picturesWrite", "andrew"));
+		store.addCredential(new StaticCredential("sbose", "picturesWrite", "patrick"));
+
+		System.out.println(store.toString() + "\n\n");
+
+		ResultEvidenceMap result = store.forwardSearch(new SimpleEntity("andrew"));
+		Set resultSet = result.resultSet();
+		System.out.println("forward andrew is: " + resultSet);
+		Iterator it = resultSet.iterator();
+		while (it.hasNext()) {
+		    System.out.println(it.next().toString());
+		}
+
+		//add a credential
+		store.addCredential(new StaticCredential("sbose", "picturesRead", "andrew"));
+
+		System.out.println("\n\n added credential sbose.picturesRead <- andrew");
+
+		System.out.println("\n" + store.toString() + "\n\n" + "forward search on entity andrew:");
+
+		result = store.forwardSearch(new SimpleEntity("andrew"));
+		resultSet = result.resultSet();
+		System.out.println("forward andrew is: " + resultSet);
+		it = resultSet.iterator();
+		while (it.hasNext()) {
+		    System.out.println(it.next().toString());
+		}
+
+
+		//remove a credential
+		//
+		//
+
+		store.removeCredential(new StaticCredential("sbose", "picturesWrite", "patrick"));
+
+		System.out.println("\n\n removed credential sbose.picturesWrite <- patrick");
+
+		System.out.println("\n" + store.toString() + "\n\n" + "forward search on patrick:");
+
+		result = store.forwardSearch(new SimpleEntity("patrick"));
+		resultSet = result.resultSet();
+		it = resultSet.iterator();
+		while (it.hasNext()) {
+		    System.out.println(it.next().toString());
+		}
+	}
+
+
+
+    static void test4(int l, int n) throws Exception {
+        CredentialManager cs = new CredentialManager();
+        for (int j=0; j<n; j++) {
+            cs.addCredential(new StaticCredential("K", "C", "K.C"+l+".B"+j));
+        }
+            cs.addCredential(new StaticCredential("K", "C1", "K0.A"));
+        for (int i=1; i<l; i++) {
+            int j = i+1;
+            cs.addCredential(new StaticCredential("K", "C"+j, "K.C"+i+".A"));
+        }
+        for (int i=0; i<n; i++) {
+            cs.addCredential(new StaticCredential("K0", "A", "K"+i));
+        }
+        for (int i=0; i<n; i++) {
+            int j = (i+1) % n;
+            cs.addCredential(new StaticCredential("K"+i, "A", "K"+j+".A"));
+        }
+        System.out.println(cs.toString());
+        cs.forwardSearch(new SimpleEntity("K0"));
+
+        cs.backwardSearch(new Role("K", "C"));
+
+        //engine.bidirectionSearch(new Role("K0", "B0"), new Role("K", "C"));
+    }
+
+}
Index: fedd/abac-src/rbtm/test/TestEngine.java
===================================================================
--- fedd/abac-src/rbtm/test/TestEngine.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/TestEngine.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,223 @@
+package edu.stanford.peer.rbtm.test;
+
+import java.io.*;
+import java.util.*;
+
+import edu.stanford.peer.rbtm.RBTMConstants;
+import edu.stanford.peer.rbtm.engine.*;
+import edu.stanford.peer.rbtm.credential.*;
+import edu.stanford.peer.rbtm.util.*;
+
+public class TestEngine implements RBTMConstants {
+
+    static HashSet credSet;
+
+    static GraphEngine mgr, oppoEngine, sensEngine, simpEngine;
+
+    static PrintStream out, oppoOut, sensOut, simpOut;
+
+    static String outPrefix = "frontier";
+
+    static void createOutput(String prefix) {
+	if(prefix == null || prefix.length() == 0) 
+	    prefix = outPrefix;
+	try {
+	    out = new PrintStream(new FileOutputStream(prefix + "-cred.txt"));
+	oppoOut = new PrintStream(new FileOutputStream(prefix + "-oppo.txt"));
+	sensOut = new PrintStream(new FileOutputStream(prefix + "-sens.txt"));
+	simpOut = new PrintStream(new FileOutputStream(prefix + "-simp.txt"));
+	}
+	catch(Exception ex) {
+	    ex.printStackTrace();
+	}
+    }
+
+    static void parseSection(BufferedReader in, HashMap conf) 
+	throws Exception {
+	HashSet set = new HashSet();
+	String name = null;
+	try {
+	    String heading = in.readLine();
+	    while(heading.startsWith("#")) {
+		System.out.println("Skipping over: " + heading);
+		heading = in.readLine();
+	    }
+	    StringTokenizer st = new StringTokenizer(heading, "[]");
+	    name = st.nextToken().trim();
+	    System.out.println("Processing section " + name);
+	    conf.put(name, set);
+	    while(true) {
+		String line = in.readLine().trim();
+		if(line.length() < 1)
+		    return;
+		if(!line.startsWith("#")) {
+		    System.out.println("line = '" + line + "'");
+		    set.add(line);
+		}
+	    }
+	}
+	catch(EOFException eof) {
+	    conf.put(name, set);
+	    throw eof;
+	}
+	catch(Exception ex) {
+	    //ex.printStackTrace();
+	    throw(ex);
+	}
+    }
+
+    public static HashMap loadConfiguration(String name) {
+	HashMap confMap = new HashMap(6);
+	try {
+	    BufferedReader in = new BufferedReader(new FileReader(name));
+	    while(true) {
+		parseSection(in, confMap);
+	    }
+	}
+	catch(Exception ex) {
+	    //ex.printStackTrace();
+	    return confMap;
+	}
+    }
+
+
+    static HashSet loadCredentials(HashMap confs) {
+	HashSet credSet = new HashSet();
+
+	try {
+	    Iterator i = ((HashSet)confs.get("credentials")).iterator();
+	    while(i.hasNext()) {
+		credSet.add(new StaticCredential((String)i.next()));
+	    }
+	}
+	catch(Exception ex) {
+	    //ex.printStackTrace();
+	    return credSet;
+	}
+	return credSet;
+    }
+    
+    static HashSet loadTraceable(HashMap conf) {
+	HashSet names = new HashSet();
+
+	try {
+	    Iterator i = ((HashSet)conf.get("traceable")).iterator();
+	    while(i.hasNext()) {
+		names.add(new SimpleRoleName((String)i.next()));
+	    }
+	}
+	catch(Exception ex) {
+	    ex.printStackTrace();
+	    return names;
+	}
+	System.out.println("traceable: " + names);
+	return names;
+    }
+
+    static HashSet loadSensitive(HashMap conf) {
+	HashSet sens = new HashSet();
+
+	try {
+	    Iterator i = ((HashSet)conf.get("sensitive")).iterator();
+	    while(i.hasNext()) {
+		sens.add(StaticCredential.getRole((String)i.next()));
+	    }
+	}
+	catch(Exception ex) {
+	    ex.printStackTrace();
+	    return sens;
+	}
+	System.out.println("sensitive: " + sens);
+	return sens;
+    }
+
+
+    static void createEngines(HashMap conf) {
+	Oppo oppo = new Oppo(new Vector(loadTraceable(conf)));
+	Sens sens = new Sens(new Vector(loadSensitive(conf)));
+	Simp simp = new Simp();
+	int track = TRACK_ALL;
+
+	System.out.println("------> Credential Graph");
+	mgr = new GraphEngine(credSet, track, null, null);
+	System.out.println("------> Opponent Graph");
+	oppoEngine = new GraphEngine(credSet, track, null, oppo);
+	System.out.println("------> Sensitive Graph");
+	sensEngine = new GraphEngine(credSet, track, null, sens);
+	System.out.println("------> Simple Graph");
+	simpEngine = new GraphEngine(credSet, track, null, simp);
+     }
+
+    static void searchExpression
+        (EntityExpression child, GraphEngine graph, PrintStream out) {
+        ResultEvidenceMap map = graph.backwardSearch(child);
+        Iterator i = map.resultSet().iterator();
+        while(i.hasNext()) {
+            EntityExpression ancestor = (EntityExpression)i.next();
+            HashSet chain = graph.getChain(child, ancestor);
+            Iterator credentials = chain.iterator();
+
+            out.println("Credential chain for" + child + "<--" + ancestor );
+            while(credentials.hasNext()) {
+                out.print("\t");
+                out.println(credentials.next());
+            }
+        }
+    }
+
+    static void searchExpression(EntityExpression expr) {
+	System.out.println("[cred for " + expr + "]");
+	out.println("Credential Graph of  " + expr + " = " +
+				   mgr.backwardSearch(expr));
+    searchExpression(expr, mgr, out);
+	System.out.println("[oppo for " + expr + "]");
+	oppoOut.println("Oppo Frontier of  " + expr + " = " +
+				   oppoEngine.backwardSearch(expr));
+	oppoOut.println("[oppo chains for " + expr + "]");
+    searchExpression(expr, oppoEngine, oppoOut);
+	System.out.println("[sens for " + expr + "]");
+	sensOut.println("Sens Frontier of  " + expr + " = " +
+				   sensEngine.backwardSearch(expr));
+	sensOut.println("[sens chains for " + expr + "]");
+    searchExpression(expr, sensEngine, sensOut);
+	System.out.println("[simp for " + expr + "]");
+	simpOut.println("Simp Frontier of  " + expr + " = " +
+				   simpEngine.backwardSearch(expr));
+	simpOut.println("[simp chains for " + expr + "]");
+    searchExpression(expr, sensEngine, sensOut);
+    }
+
+    static void performSearches(HashMap conf) {
+	String line;
+	EntityExpression expr;
+	
+	try {
+	    Iterator i = ((HashSet)conf.get("searches")).iterator();
+	    while(i.hasNext()) {
+		expr = StaticCredential.getEntityExpression
+		    (((String)i.next()).trim());
+		searchExpression(expr);
+	    }
+	}
+	catch(Exception ex) {
+	    ex.printStackTrace();
+	}
+	
+    }
+
+
+
+
+    public static void main(String arg[]) {
+	HashMap conf = loadConfiguration((arg.length > 0)?arg[0]:"abac.conf");
+	credSet = loadCredentials(conf);
+
+	createEngines(conf);
+	createOutput("frontier");
+	performSearches(conf);
+    }
+
+}
+ 
+
+
Index: fedd/abac-src/rbtm/test/abac.conf
===================================================================
--- fedd/abac-src/rbtm/test/abac.conf	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/abac.conf	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,37 @@
+[credentials]
+EPub.discount <- EOrg.preferred ^ EPub.student
+EOrg.preferred <- ACM.member
+EOrg.preferred <- IEEE.member
+ACM.member <- Alice
+ACM.member <- Cindy
+ACM.member <- Brian
+EPub.student <- EPub.university.stuId
+EPub.university <- ABU.accredited
+ABU.accredited <- StateU
+StateU.stuId <- Alice
+StateU.stuId <- Cindy
+
+[sensitive]
+IEEE.member
+StateU.stuId
+
+[traceable]
+spdiscount
+preferred
+student
+university
+
+[searches]
+EPub.discount 
+EOrg.preferred ^ EPub.student
+EOrg.preferred 
+IEEE.member
+ACM.member 
+EPub.student 
+EPub.university.stuId
+EPub.university 
+ABU.accredited
+StateU
+StateU.stuId 
+Alice
+Brian
Index: fedd/abac-src/rbtm/test/cred.txt
===================================================================
--- fedd/abac-src/rbtm/test/cred.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/cred.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,9 @@
+EOrg.preferred<-ACM.Member
+ACM.Member<-Alice
+ACM.Member<-Cindy
+ACM.Member<-Brian
+EPub.student<-EPub.University.StuId
+EPub.University<-ABU.Accredited
+ABU.Accredited<-StateU
+StateU.StuId<-Alice
+StateU.StuId <- Cindy
Index: fedd/abac-src/rbtm/test/frontier-creds.txt
===================================================================
--- fedd/abac-src/rbtm/test/frontier-creds.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/frontier-creds.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,11 @@
+EPub.discount <- EOrg.preferred ^ EPub.student
+EOrg.preferred <- ACM.member
+EOrg.preferred <- IEEE.member
+ACM.member <- Alice
+ACM.member <- Cindy
+ACM.member <- Brian
+EPub.student <- EPub.university.stuId
+EPub.university <- ABU.accredited
+ABU.accredited <- StateU
+StateU.stuId <- Alice
+StateU.stuId <- Cindy
Index: fedd/abac-src/rbtm/test/frontier-desired-oppo-output.txt
===================================================================
--- fedd/abac-src/rbtm/test/frontier-desired-oppo-output.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/frontier-desired-oppo-output.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,15 @@
+				
+EPub.discount				{ EOrg.preferred ^ EPub.student }
+EOrg.preferred ^ EPub.student		{ EOrg.preferred ^ EPub.student }
+EOrg.preferred			      *	{ IEEE.member, ACM.member }  
+IEEE.member			      *	{ IEEE.member }
+ACM.member				{ ACM.member }
+EPub.student				{ EPub.university.stuId }
+EPub.university.stuId			{ EPub.university.stuId }
+EPub.university			      *	{ ABU.accredited }
+ABU.accredited			      *	{ ABU.accredited }
+StateU					{ StateU }
+StateU.stuId			      *	{ StateU.stuId }
+Alice					{ Alice }
+Brian					{ Brian }
+Cindy					{ Cindy }
Index: fedd/abac-src/rbtm/test/frontier-desired-sens-output.txt
===================================================================
--- fedd/abac-src/rbtm/test/frontier-desired-sens-output.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/frontier-desired-sens-output.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,15 @@
+				
+EPub.discount				{ EOrg.preferred ^ EPub.student }
+EOrg.preferred ^ EPub.student		{ EOrg.preferred ^ EPub.student }
+EOrg.preferred			      *	{ Alice, Cindy, Brian, IEEE.member }
+IEEE.member			      *	{ IEEE.member }
+ACM.member				{ Alice, Cindy, Brian }
+EPub.student				{ EPub.university.stuId }
+EPub.university.stuId			{ EPub.university.stuId }
+EPub.university				{ StateU }
+ABU.accredited				{ StateU }
+StateU					{ StateU }
+StateU.stuId			      *	{ StateU.stuId }
+Alice					{ Alice }
+Brian					{ Brian }
+Cindy					{ Cindy }
Index: fedd/abac-src/rbtm/test/frontier-desired-simp-output.txt
===================================================================
--- fedd/abac-src/rbtm/test/frontier-desired-simp-output.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/frontier-desired-simp-output.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,15 @@
+				
+EPub.discount				{ EOrg.preferred ^ EPub.student }
+EOrg.preferred ^ EPub.student		{ EOrg.preferred ^ EPub.student }
+EOrg.preferred				{ Alice, Cindy, Brian }
+IEEE.member				{ }
+ACM.member				{ Alice, Cindy, Brian }
+EPub.student				{ EPub.university.stuId }
+EPub.university.stuId			{ EPub.university.stuId }
+EPub.university				{ StateU }
+ABU.accredited				{ StateU }
+StateU					{ StateU }
+StateU.stuId				{ Alice, Brian }
+Alice					{ Alice }
+Brian					{ Brian }
+Cindy					{ Cindy }
Index: fedd/abac-src/rbtm/test/frontier-searches.txt
===================================================================
--- fedd/abac-src/rbtm/test/frontier-searches.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/frontier-searches.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,13 @@
+EPub.discount 
+EOrg.preferred ^ EPub.student
+EOrg.preferred 
+IEEE.member
+ACM.member 
+EPub.student 
+EPub.university.stuId
+EPub.university 
+ABU.accredited
+StateU
+StateU.stuId 
+Alice
+Brian
Index: fedd/abac-src/rbtm/test/issuer-tracable.txt
===================================================================
--- fedd/abac-src/rbtm/test/issuer-tracable.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/issuer-tracable.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,4 @@
+spdiscount
+preferred
+student
+university
Index: fedd/abac-src/rbtm/test/med-cred.txt
===================================================================
--- fedd/abac-src/rbtm/test/med-cred.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/med-cred.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,2 @@
+MedixFund.pA <-- Alice
+ReliefNet.coaMember <-- MedixFund
Index: fedd/abac-src/rbtm/test/med.conf
===================================================================
--- fedd/abac-src/rbtm/test/med.conf	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/med.conf	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,18 @@
+[credentials]
+MedixFund.purchasingA <-- Alice
+ReliefNet.member <-- MedixFund
+MedSup.cPartner <-- ReliefNet.member
+MedSup.discount <-- MedSup.cPartner.purchasingA
+
+[sensitive]
+MedixFund.purchasingA
+
+[traceable]
+discount
+member
+purchasingA
+
+[searches]
+MedSup.cPartner
+Alice
+MedSup.discount
Index: fedd/abac-src/rbtm/test/package.html
===================================================================
--- fedd/abac-src/rbtm/test/package.html	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/package.html	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,4 @@
+<BODY>
+   <P>Testing frameworks to gauge the RBTM and ABAC packages. The class is for 
+      the rbtm packages. EPub and Engine are newer testing applications.</P>
+</BODY>
Index: fedd/abac-src/rbtm/test/searches.txt
===================================================================
--- fedd/abac-src/rbtm/test/searches.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/searches.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,4 @@
+EOrg.preferred
+EPub.University
+EPub.student
+EOrg.preferred ^ EPub.student
Index: fedd/abac-src/rbtm/test/sensitive.txt
===================================================================
--- fedd/abac-src/rbtm/test/sensitive.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/test/sensitive.txt	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,2 @@
+IEEE.member
+StateU.StuId
