changeset 89:aed27c25859e

*** empty log message ***
author kono
date Fri, 18 Jan 2008 16:50:12 +0900
parents 6b3535ea6958
children 8affa0aa0fc0
files src/lite/BDDSolver.java src/lite/ITLNodeFactory.java src/lite/ITLSatisfier.java src/sbdd/SBDDFactory.java src/sbdd/SBDDFactoryInterface.java
diffstat 5 files changed, 48 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/src/lite/BDDSolver.java	Fri Jan 18 16:00:37 2008 +0900
+++ b/src/lite/BDDSolver.java	Fri Jan 18 16:50:12 2008 +0900
@@ -21,20 +21,13 @@
 		id = BDDID.Variable;
 	}
 
-	public BDDSolver(ITLSolver var, ITLSolver high, ITLSolver low) {
-		this.var = var;
-		this.high = (BDDSolver) high;
-		this.low  = (BDDSolver) low;
-		id = BDDID.Variable;
-	}
-
 	public BDDSolver(BDDID id, int hash) {
 		// primitives
 		this.id = id;
 		this.hash = hash;
 	}
 
-	public BDDSolver(ITLSolver v, ITLSolver high, ITLSolver low, BDDID id) {
+	public BDDSolver(ITLSolver v, BDDSolver high, BDDSolver low, BDDID id) {
 		// for modal node with id
 		this(v,high,low);
 		this.id = id;
@@ -130,7 +123,7 @@
 	}
 
 
-	public ITLSolver and(SBDDFactoryInterface sf,BDDSolver right) {
+	public BDDSolver and(SBDDFactoryInterface sf,BDDSolver right) {
 		switch(id) {
 		case True: return right;
 		case False: return sf.falseNode();
@@ -145,7 +138,7 @@
 			return sf.bddNode(var,high.and(sf,right),low.and(sf,right));
 	}
 
-	public ITLSolver or(SBDDFactoryInterface sf,BDDSolver right) {
+	public BDDSolver or(SBDDFactoryInterface sf,BDDSolver right) {
 		switch(id) {
 		case True: return sf.trueNode();
 		case False: return right;
@@ -160,7 +153,7 @@
 	}
 
 
-	public ITLSolver not(SBDDFactoryInterface sf) {
+	public BDDSolver not(SBDDFactoryInterface sf) {
 		switch(id) {
 		case True: return sf.falseNode();
 		case False: return sf.trueNode();
--- a/src/lite/ITLNodeFactory.java	Fri Jan 18 16:00:37 2008 +0900
+++ b/src/lite/ITLNodeFactory.java	Fri Jan 18 16:50:12 2008 +0900
@@ -4,13 +4,10 @@
 
 import parser.Command;
 import parser.MacroNodeParserInterface;
-import sbdd.SBDDFactoryInterface;
 import sbdd.SBDDSet;
 
-
-
-public class ITLNodeFactory implements	ITLNodeFactoryInterface<ITLSolver>,
-											SBDDFactoryInterface {
+public class ITLNodeFactory implements	ITLNodeFactoryInterface<ITLSolver> {
+											// SBDDFactoryInterface {
 
 	public static final ITLSolver trueSolver = new TrueSolver();
 	public static final ITLSolver falseSolver = new FalseSolver();	
@@ -94,7 +91,10 @@
 	}
 
 	public ITLSolver bddNode(ITLSolver cond, ITLSolver high, ITLSolver low) {
-		return new BDDSolver((VariableSolver)cond,high,low);
+		return orNode(
+				andNode(cond, high),
+				andNode(notNode(cond), low));
+		// return new BDDSolver((VariableSolver)cond,high,low);
 	}
 
 	public SBDDSet set() {
--- a/src/lite/ITLSatisfier.java	Fri Jan 18 16:00:37 2008 +0900
+++ b/src/lite/ITLSatisfier.java	Fri Jan 18 16:50:12 2008 +0900
@@ -1,6 +1,7 @@
 package lite;
 
 
+import sbdd.SBDDFactory;
 import sbdd.SBDDFactoryInterface;
 import verifier.Backtrack;
 import verifier.ChoicePointList;
@@ -29,7 +30,8 @@
 	
 	public ITLSatisfier(ITLSolver p) {
 		this();
-		lf = new ITLNodeFactory();
+		// lf = new ITLNodeFactory();
+		lf = new SBDDFactory();
 		this.empty = p; // have to be the same in the parser
 	}
 
--- a/src/sbdd/SBDDFactory.java	Fri Jan 18 16:00:37 2008 +0900
+++ b/src/sbdd/SBDDFactory.java	Fri Jan 18 16:50:12 2008 +0900
@@ -10,13 +10,13 @@
 
 public class SBDDFactory implements SBDDFactoryInterface {
 
-	public static final ITLSolver trueSolver   = new BDDSolver(ITLNodeFactory.trueSolver,BDDID.True,TokenID.True.hash);
-	public static final ITLSolver falseSolver  = new BDDSolver(ITLNodeFactory.falseSolver,BDDID.False,TokenID.False.hash);
-	public static final ITLSolver emptySolver  = new BDDSolver(ITLNodeFactory.emptySolver,trueSolver,falseSolver,BDDID.BDD);
+	public static final BDDSolver trueSolver   = new BDDSolver(ITLNodeFactory.trueSolver,BDDID.True,TokenID.True.hash);
+	public static final BDDSolver falseSolver  = new BDDSolver(ITLNodeFactory.falseSolver,BDDID.False,TokenID.False.hash);
+	public static final BDDSolver emptySolver  = new BDDSolver(ITLNodeFactory.emptySolver,trueSolver,falseSolver,BDDID.BDD);
 	public SBDDSet hash;
 	ITLNodeFactory itlf;
 	
-	SBDDFactory() {
+	public SBDDFactory() {
 		init();
 	}
 	
@@ -30,59 +30,59 @@
 	}
 	
 
-	public ITLSolver bddNode(ITLSolver lvar, ITLSolver solver, ITLSolver solver2) {
+	public BDDSolver bddNode(ITLSolver lvar, BDDSolver solver, BDDSolver solver2) {
 		if (solver==solver2) return solver;
 		ITLSolver v =  new BDDSolver(lvar,solver,solver2,BDDID.BDD);
 		return hash.put(v); 
 	}
 
-	public ITLSolver chopNode(ITLSolver solver, ITLSolver solver2) {
-		BDDSolver former = solver.toSBDD(this);
+	public BDDSolver chopNode(ITLSolver solver, ITLSolver solver2) {
+		BDDSolver former = solver.toSBDD(this); // unnecesarry?
 		BDDSolver later = solver2.toSBDD(this);
 		if (former==emptySolver) return hash.put(later); 
 		if (later==emptySolver) return hash.put(former); 
-		ITLSolver v =  itlf.chopNode(solver.toSBDD(this),solver2.toSBDD(this));
+		ITLSolver v =  itlf.chopNode(former,later);
 		BDDSolver b = new BDDSolver(v,trueSolver,falseSolver,BDDID.Chop);
 		return hash.put(b);
 	}
 
-	public ITLSolver emptyNode() {
+	public BDDSolver emptyNode() {
 		return emptySolver;
 	}
 
-	public ITLSolver existsNode(ITLSolver solver, ITLSolver solver2) {
-		ITLSolver v =  itlf.existsNode(solver,solver2);
+	public BDDSolver existsNode(ITLSolver solver, ITLSolver solver2) {
+		ITLSolver v =  itlf.existsNode(solver,solver2.toSBDD(this));
 		BDDSolver b = new BDDSolver(v,trueSolver,falseSolver,BDDID.Exists);
 		return hash.put(b);
 	}
 
-	public ITLSolver falseNode() {
+	public BDDSolver falseNode() {
 		return falseSolver;
 	}
 
-	public ITLSolver nextNode(ITLSolver solver) {
+	public BDDSolver nextNode(ITLSolver solver) {
 		ITLSolver v =  itlf.nextNode(solver);
 		BDDSolver b = new BDDSolver(v,trueSolver,falseSolver,BDDID.Next);
 		return hash.put(b);
 	}
 
-	public ITLSolver projectionNode(ITLSolver solver, ITLSolver solver2) {
+	public BDDSolver projectionNode(ITLSolver solver, ITLSolver solver2) {
 		ITLSolver v =  itlf.projectionNode(solver,solver2);
 		BDDSolver b = new BDDSolver(v,trueSolver,falseSolver,BDDID.Projection);
 		return hash.put(b);
 	}
 
-	public ITLSolver trueNode() {
+	public BDDSolver trueNode() {
 		return trueSolver;
 	}
 
-	public ITLSolver variableNode(String name, boolean value) {
+	public BDDSolver variableNode(String name, boolean value) {
 		ITLSolver v =  new BDDSolver(itlf.variableNode(name, value),trueSolver,falseSolver,BDDID.Variable);
 		return hash.put(v); 
 	}
 
 
-	public ITLSolver andNode(ITLSolver left, ITLSolver right) {
+	public BDDSolver andNode(ITLSolver left, ITLSolver right) {
 
 		BDDSolver lb = left.toSBDD(this);
 		BDDSolver rb = right.toSBDD(this);
@@ -90,28 +90,28 @@
 			return falseSolver;
 		if (lb==trueSolver)
 			return rb;
-		lb =  (BDDSolver) lb.and(this, rb);
+		lb = lb.and(this, rb);
 		return hash.put(lb);
 	}
 
 
-	public ITLSolver notNode(ITLSolver node) {
+	public BDDSolver notNode(ITLSolver node) {
 		BDDSolver nb = node.toSBDD(this);
 		if (nb==falseSolver) return trueSolver;
 		if (nb==trueSolver)	 return falseSolver;
-		nb = (BDDSolver) nb.not(this);
+		nb = nb.not(this);
 		return hash.put(nb);
 	}
 
 
-	public ITLSolver orNode(ITLSolver left, ITLSolver right) {
+	public BDDSolver orNode(ITLSolver left, ITLSolver right) {
 		BDDSolver lb = left.toSBDD(this);
 		BDDSolver rb = right.toSBDD(this);
 		if (lb==trueSolver||rb==trueSolver)
 			return trueSolver;
 		if (lb==falseSolver)
 			return rb;
-		lb = (BDDSolver) lb.or(this, rb);
+		lb = lb.or(this, rb);
 		return hash.put(lb);
 	}
 
--- a/src/sbdd/SBDDFactoryInterface.java	Fri Jan 18 16:00:37 2008 +0900
+++ b/src/sbdd/SBDDFactoryInterface.java	Fri Jan 18 16:50:12 2008 +0900
@@ -1,31 +1,32 @@
 package sbdd;
 
+import lite.BDDSolver;
 import lite.ITLSolver;
 
 
 public interface SBDDFactoryInterface {
 
-	public ITLSolver bddNode(ITLSolver lvar, ITLSolver solver, ITLSolver solver2);
+	public BDDSolver bddNode(ITLSolver lvar, BDDSolver solver, BDDSolver solver2);
 
-	public ITLSolver chopNode(ITLSolver solver, ITLSolver solver2);
+	public BDDSolver chopNode(ITLSolver solver, ITLSolver solver2);
 
-	public ITLSolver emptyNode();
+	public BDDSolver emptyNode();
 
-	public ITLSolver existsNode(ITLSolver solver, ITLSolver solver2);
+	public BDDSolver existsNode(ITLSolver solver, ITLSolver solver2);
 
-	public ITLSolver falseNode();
+	public BDDSolver falseNode();
 
-	public ITLSolver nextNode(ITLSolver solver);
+	public BDDSolver nextNode(ITLSolver solver);
 
-	public ITLSolver projectionNode(ITLSolver solver, ITLSolver solver2);
+	public BDDSolver projectionNode(ITLSolver solver, ITLSolver solver2);
 
-	public ITLSolver trueNode();
+	public BDDSolver trueNode();
 
-	public ITLSolver variableNode(String name, boolean value);
+	public BDDSolver variableNode(String name, boolean value);
 
-	public ITLSolver andNode(ITLSolver left, ITLSolver right);
-	public ITLSolver orNode(ITLSolver left,ITLSolver right);
-	public ITLSolver notNode(ITLSolver node);
+	public BDDSolver andNode(ITLSolver left, ITLSolver right);
+	public BDDSolver orNode(ITLSolver left,ITLSolver right);
+	public BDDSolver notNode(ITLSolver node);
 
 	public SBDDSet set() ;