[procilege commit] r77 - in trunk/procilege/src: main/java/merisis main/java/merisis/sense/impl main/java/merisis/tr...

0 views
Skip to first unread message

codesite...@google.com

unread,
Jun 13, 2007, 2:54:59 PM6/13/07
to procil...@googlegroups.com
Author: lcgong
Date: Wed Jun 13 11:52:54 2007
New Revision: 77

Added:
trunk/procilege/src/test/java/merisis/traitspace/Complement1Test.java
trunk/procilege/src/test/java/procilege/test/pal/EntityEquivTest1.java
Modified:
trunk/procilege/src/main/java/merisis/MerisisVM.java
trunk/procilege/src/main/java/merisis/sense/impl/SenseMakerImpl.java
trunk/procilege/src/main/java/merisis/traitspace/EntityHappen.java
trunk/procilege/src/main/java/merisis/traitspace/Morphism.java
trunk/procilege/src/main/java/merisis/traitspace/impl/SketchImpl.java
trunk/procilege/src/main/java/merisis/traitspace/impl/TraitSpaceImpl.java
trunk/procilege/src/main/java/procilege/impl/ComputationalEntityMgr.java
trunk/procilege/src/main/java/procilege/impl/PrivFormAnalysisImpl.java
trunk/procilege/src/test/java/merisis/contentcloud/ContentCloudTest1.java
trunk/procilege/src/test/java/merisis/traitspace/MorphismIsaTest.java
trunk/procilege/src/test/java/merisis/traitspace/MorphismProofTest.java
trunk/procilege/src/test/java/merisis/traitspace/MorphismTest1.java
trunk/procilege/src/test/java/merisis/traitspace/Spectrum1Test.java
trunk/procilege/src/test/java/procilege/test/PrivilegeCongruentTest.java
trunk/procilege/src/test/java/procilege/test/pal/AbstractPalTest.java

Log:
[Issue 34]Polished manipulation of morphism.

Modified: trunk/procilege/src/main/java/merisis/MerisisVM.java
==============================================================================
--- trunk/procilege/src/main/java/merisis/MerisisVM.java (original)
+++ trunk/procilege/src/main/java/merisis/MerisisVM.java Wed Jun 13 11:52:54 2007
@@ -13,10 +13,14 @@
void source();

void focus();
+
+ void setfocus();

void tprism();
-
- void tcomplementary();
+
+ void adopt();
+
+ void complement();

void roll(long roll);

Modified: trunk/procilege/src/main/java/merisis/sense/impl/SenseMakerImpl.java
==============================================================================
--- trunk/procilege/src/main/java/merisis/sense/impl/SenseMakerImpl.java (original)
+++ trunk/procilege/src/main/java/merisis/sense/impl/SenseMakerImpl.java Wed Jun 13 11:52:54 2007
@@ -47,7 +47,7 @@
if (sno == null) {
sno = currentno++;
qn.namespaceURI = "DEFAULT";
- qn.localpart = "#" + Long.toHexString(sno);
+ qn.localpart = "#" + sno;//Long.toHexString(sno);
snMap.put(sno, qn);
qnameMap.put(qn, sno);

Modified: trunk/procilege/src/main/java/merisis/traitspace/EntityHappen.java
==============================================================================
--- trunk/procilege/src/main/java/merisis/traitspace/EntityHappen.java (original)
+++ trunk/procilege/src/main/java/merisis/traitspace/EntityHappen.java Wed Jun 13 11:52:54 2007
@@ -102,7 +102,7 @@
// NOTICE: changes the souces instead of the focus.
mvm.give(ontos);
mvm.tprism();
- mvm.tcomplementary();
+ mvm.complement();
onto = mvm.read();
} finally {
mvm.stepout();
@@ -156,7 +156,7 @@
try {
mvm.give(BitUtil.toArray(k));
mvm.tprism();
- mvm.tcomplementary();
+ mvm.complement();
} finally {
mvm.stepout();
}

Modified: trunk/procilege/src/main/java/merisis/traitspace/Morphism.java
==============================================================================
--- trunk/procilege/src/main/java/merisis/traitspace/Morphism.java (original)
+++ trunk/procilege/src/main/java/merisis/traitspace/Morphism.java Wed Jun 13 11:52:54 2007
@@ -1,9 +1,9 @@
package merisis.traitspace;

import static java.lang.String.format;
-import static merisis.util.BitUtil.bitsetOrArray;

import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -41,7 +41,7 @@

bs.set(a);

- return compute(f, bs, checked, b);
+ return proof(checked, f, bs, b);
}

public long[] domain(long f, long b, boolean recursive) {
@@ -49,7 +49,7 @@
OpenBitSet bs = new OpenBitSet();
bs.set(b);

- return BitUtil.toArray(computeDomain(f, bs, new OpenBitSet(),
+ return BitUtil.toArray(searchDomain(f, bs, new OpenBitSet(),
new OpenBitSet(), recursive));
}

@@ -130,6 +130,70 @@

if (test)
return true;
+
+ HashSet<Long> aset = new HashSet<Long>();
+ for (int i : group) {
+ long[] diad = diads.get(i);
+ aset.add(diad[0]);
+ }
+
+ if (aset.size() == 1)
+ continue;
+
+ OpenBitSet bs = null;
+ for (long ax : aset) {
+ OpenBitSet bx = BitUtil.bitsetOrArray(new OpenBitSet(), domain(
+ f, ax, true));
+
+ logger.finest(String.format("%d from {%s}", ax, BitUtil
+ .toString(bx)));
+ if (bs == null) {
+ bs = new OpenBitSet();
+ bs.or(bx);
+ continue;
+ }
+ bs.and(bx);
+ }
+
+ if (logger.isLoggable(Level.FINEST)) {
+
+ logger.finest(String.format("conviction, %s : {%s}", aset
+ .toString(), BitUtil.toString(bs)));
+ }
+
+ if (bs.isEmpty())
+ continue;
+
+ HashSet<Long> bset = new HashSet<Long>();
+ for (int i : group) {
+ long[] diad = diads.get(i);
+ bset.add(diad[1]);
+ }
+
+ test = true;
+ for (long ax = bs.nextSetBit(0); ax >= 0; ax = bs
+ .nextSetBit(ax + 1)) {
+
+ for (long bx : bset) {
+ if (!exists(f, ax, bx)) {
+ test = false;
+
+ if (logger.isLoggable(Level.FINEST)) {
+ logger.finest(String.format(
+ "proofed %d: %d -> %d, FALSE", f, ax, bx));
+ }
+ break;
+ }
+
+ if (logger.isLoggable(Level.FINEST)) {
+ logger.finest(String.format(
+ "proofed %d: %d -> %d, TRUE", f, ax, bx));
+ }
+ }
+ }
+
+ if (test)
+ return true;
}

return false;
@@ -146,7 +210,9 @@
todo.clear(a);
checked.set(a);

- OpenBitSet bparents = infimumB(new OpenBitSet(), f, a);
+ // OpenBitSet bparents = infimumB(new OpenBitSet(), f, a);
+ OpenBitSet bparents = new OpenBitSet();
+ searchCodomain(bparents, f, a);

result.or(bparents);

@@ -157,7 +223,7 @@
return result;
}

- private OpenBitSet computeDomain(long f, OpenBitSet todo,
+ private OpenBitSet searchDomain(long f, OpenBitSet todo,
OpenBitSet checked, OpenBitSet result, boolean isRecursive) {

for (long b = todo.nextSetBit(0); b >= 0; b = todo.nextSetBit(b + 1)) {
@@ -168,195 +234,92 @@
todo.clear(b);
checked.set(b);

- OpenBitSet aparents = infimumA(new OpenBitSet(), f, b);
+ OpenBitSet aparents;
+ aparents = new OpenBitSet();
+ searchDomainOf(aparents, f, b);
+
result.or(aparents);
if (isRecursive)
- computeDomain(f, aparents, checked, result, isRecursive);
+ searchDomain(f, aparents, checked, result, isRecursive);
}

return result;
}

- private boolean compute(long f, OpenBitSet todo, OpenBitSet checked,
- long dest) {
+ private boolean proof(OpenBitSet checked, long f, OpenBitSet from, long to) {

- for (long a = todo.nextSetBit(0); a >= 0; a = todo.nextSetBit(a + 1)) {
+ for (long a = from.nextSetBit(0); a >= 0; a = from.nextSetBit(a + 1)) {

- if (a == dest)
- return false;
+ // reflexivity
+ if (a == to)
+ return true;

if (checked.get(a))
continue;

- todo.clear(a);
+ from.clear(a);
checked.set(a);

- OpenBitSet bparents = infimumB(new OpenBitSet(), f, a);
+ OpenBitSet bparents = new OpenBitSet();
+ searchCodomain(bparents, f, a);

- if (bparents.get(dest))
+ if (bparents.get(to))
return true;

- if (compute(f, bparents, checked, dest))
+ if (proof(checked, f, bparents, to))
return true;
}

return false;
}

- private OpenBitSet infimumB(OpenBitSet infimum, long f, long a) {
+ private void searchDomainOf(OpenBitSet result, long f, long to) {

- mvm.give(f, a);
+ mvm.give(to, f);
mvm.source();
mvm.focus();
- long[] suspicious = mvm.read();
- if (logger.isLoggable(Level.FINEST)) {
- logger.finest(String.format("suspicious instances: {%s}", BitUtil
- .toString(suspicious)));
- }
-
- for (int i = 0; i < suspicious.length; i++) {
-
- long instance = suspicious[i];
- long[] sp;
-
- mvm.autobeam();
- try {
- mvm.give(instance);
- mvm.focus();
- sp = mvm.read();
- if (sp == null)
- continue;
- } finally {
- mvm.stepout();
- }
-
- OpenBitSet aparents = new OpenBitSet();
- for (int j = 0; j < sp.length; j++) {
- long aparent = sp[j];
- mvm.give(f, a);
- mvm.source();
- mvm.give(aparent);
- mvm.focus();
- if (mvm.read() != null) {
- aparents.set(aparent);
- }
- }
- if (aparents.isEmpty())
- continue;
-
- OpenBitSet parents = bitsetOrArray(new OpenBitSet(), sp);
- parents.andNot(aparents);
- infimum.or(parents);
- }
+ mvm.autobeam();
+ mvm.give(f);
+ mvm.tprism();
+
+ mvm.setfocus();
+
+ mvm.autobeam();
+ mvm.give(f);
+ mvm.complement();

+ long[] dots;
+ dots = mvm.read();
if (logger.isLoggable(Level.FINEST)) {
- logger.finest(String.format("b: {%s}", BitUtil.toString(infimum)));
+ logger.finest(String.format("%d's domain of %d: {%s}", f, to,
+ BitUtil.toString(dots)));
}

- return infimum;
+ if (dots == null)
+ return;
+
+ BitUtil.bitsetOrArray(result, dots);
}

- private OpenBitSet infimumA(OpenBitSet infimum, long f, long b) {
+ private void searchCodomain(OpenBitSet result, long f, long from) {

- mvm.give(f, b);
+ mvm.give(from, f);
mvm.source();
mvm.focus();
- long[] suspects = mvm.read();
- if (logger.isLoggable(Level.FINEST)) {
- logger.finest(String.format("suspicious: {%s}", BitUtil
- .toString(suspects)));
- }
-
- ArrayList<Long> witnessOfABranches = new ArrayList<Long>();
- SUSPECT: for (int i = 0; i < suspects.length; i++) {
-
- long suspect = suspects[i];
-
- mvm.autobeam();
- try {
- mvm.give(suspect);
- mvm.focus();
- } finally {
- mvm.stepout();
- }
-
- long[] sp = mvm.read();
- if (sp == null)
- continue;
-
- for (int j = 0; j < sp.length; j++) {
-
- mvm.give(f, b);
- mvm.source();
- mvm.give(sp[j]);
- mvm.focus();
- if (mvm.read() != null) {
- continue SUSPECT;
- }
- }
- witnessOfABranches.add(suspect);
- }
-
- ArrayList<Long> suspInfimum = new ArrayList<Long>();
- for (long witness : witnessOfABranches) {
-
- mvm.autobeam();
- try {
- mvm.give(witness);
- mvm.focus();
- } finally {
- mvm.stepout();
- }
-
- long[] sp = mvm.read();
- if (sp == null)
- continue;
-
- for (int j = 0; j < sp.length; j++) {
-
- mvm.give(b);
- mvm.source();
- mvm.give(sp[j]);
- mvm.focus();
- if (mvm.read() != null)
- continue;
-
- suspInfimum.add(sp[j]);
- }
- }
-
- for (long witness : suspInfimum) {
-
- mvm.autobeam();
- try {
- mvm.give(witness);
- mvm.focus();
- } finally {
- mvm.stepout();
- }
-
- long[] sp = mvm.read();
- if (sp == null)
- continue;
-
- for (int j = 0; j < sp.length; j++) {
-
- mvm.give(f);
- mvm.source();
- mvm.give(sp[j]);
- mvm.focus();
- if (mvm.read() != null)
- continue;
-
- infimum.set(sp[j]);
- }
- }
+ mvm.autobeam();
+ mvm.give(f);
+ mvm.complement();

+ long[] dots;
+ dots = mvm.read();
if (logger.isLoggable(Level.FINEST)) {
- logger.finest(String.format("a-infimum: {%s}", BitUtil
- .toString(infimum)));
+ logger.finest(String.format("%d's codomain of %d : {%s}", f, from,
+ BitUtil.toString(dots)));
}

- return infimum;
+ if (dots == null)
+ return;
+
+ BitUtil.bitsetOrArray(result, dots);
}
}

Modified: trunk/procilege/src/main/java/merisis/traitspace/impl/SketchImpl.java
==============================================================================
--- trunk/procilege/src/main/java/merisis/traitspace/impl/SketchImpl.java (original)
+++ trunk/procilege/src/main/java/merisis/traitspace/impl/SketchImpl.java Wed Jun 13 11:52:54 2007
@@ -29,8 +29,6 @@

private OpenBitSet tspectrum;

- private OpenBitSet tprism;
-
private OpenBitSet focus;

private History history;
@@ -282,11 +280,11 @@
logger.finest(sb.toString());
}

- if (logger.isLoggable(Level.FINEST)) {
- StringBuilder sb = new StringBuilder();
-
- logger.finest(dumpStateDetail(sb).toString());
- }
+ // if (logger.isLoggable(Level.FINEST)) {
+ // StringBuilder sb = new StringBuilder();
+ //
+ // // logger.finest(dumpStateDetail(sb).toString());
+ // }

HistoricalHierarchyImpl hhi;
hhi = new HistoricalHierarchyImpl(footprintsMap, sliced);
@@ -303,8 +301,21 @@

return focus;
}
+
+ public void setFocus(OpenBitSet objective) {
+
+ this.focus = objective;

- public OpenBitSet tspectrum(OpenBitSet traits) {
+ if (logger.isLoggable(Level.FINEST)) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("set focus: {");
+ BitUtil.format(sb, focus, ",");
+ sb.append("}");
+ logger.finest(sb.toString());
+ }
+ }
+
+ public OpenBitSet tspectrum(OpenBitSet tprism) {

if (logger.isLoggable(Level.FINEST)) {
StringBuilder sb = new StringBuilder();
@@ -313,7 +324,7 @@
sb.append("}, source: {");
BitUtil.format(sb, source, ",");
sb.append("}, guide: {");
- BitUtil.format(sb, traits, ",");
+ BitUtil.format(sb, tprism, ",");
sb.append("}");
logger.finest(sb.toString());
}
@@ -327,62 +338,15 @@
if (backgroud != null)
bound.or(backgroud);

- tprism = traits;
-
- OpenBitSet queue = new OpenBitSet();
- queue.or(tprism);
-
- // traverse the traits
- OpenBitSet involved = new OpenBitSet();
- while (true) {
-
- long node = queue.nextSetBit(0);
- if (node < 0)
- break;
-
- queue.clear(node);
- involved.set(node);
-
- OpenBitSet nodeFootprints = footprintsMap.get(node);
- if (nodeFootprints == null) {
- nodeFootprints = new OpenBitSet();
- nodeFootprints.set(node);
- footprintsMap.put(node, nodeFootprints);
- }
-
- long[] nextpoints = history.next(node);
- if (nextpoints == null)
- continue;
-
- for (int j = 0; j < nextpoints.length; j++) {
-
- long point = nextpoints[j];
-
- OpenBitSet footprints = footprintsMap.get(point);
- if (footprints == null) {
- footprints = new OpenBitSet();
- footprintsMap.put(point, footprints);
- }
-
- footprints.set(point);
- footprints.or(nodeFootprints);
-
- queue.set(point);
- }
- }
-
- if (logger.isLoggable(Level.FINEST)) {
- StringBuilder sb = new StringBuilder();
- logger.finest(dumpStateDetail(sb).toString());
- }
+ traverse(tprism);

OpenBitSet selected = new OpenBitSet();

- long numOfTraits = traits.cardinality();
+ long numOfTraits = tprism.cardinality();

- queue = new OpenBitSet();
+ OpenBitSet queue = new OpenBitSet();
queue.or(focus);
- involved = new OpenBitSet();
+ OpenBitSet involved = new OpenBitSet();
while (true) {

long node = queue.nextSetBit(0);
@@ -397,7 +361,7 @@
continue;

if (intersectionCount(bound, nodeFootprints) == 0
- || intersectionCount(traits, nodeFootprints) == 0) {
+ || intersectionCount(tprism, nodeFootprints) == 0) {

continue;
}
@@ -445,28 +409,25 @@

return tspectrum;
}
-
- public OpenBitSet tcomplementary() {
-
+
+ public OpenBitSet complement(OpenBitSet traits) {
+
if (logger.isLoggable(Level.FINEST)) {
StringBuilder sb = new StringBuilder();
sb.append("background: {");
BitUtil.format(sb, backgroud, ",");
sb.append("}, source: {");
BitUtil.format(sb, source, ",");
- sb.append("}, t-spectrum: {");
- BitUtil.format(sb, tspectrum, ",");
+ sb.append("}, focus: {");
+ BitUtil.format(sb, focus, ",");
+ sb.append("}, the complement of {");
+ BitUtil.format(sb, traits, ",");
sb.append("}");
logger.finest(sb.toString());
}
-
- OpenBitSet bound = new OpenBitSet();
- if (source != null)
- bound.or(source);
- if (backgroud != null)
- bound.or(backgroud);
-

+ traverse(traits);
+
if (focus == null || focus.isEmpty())
return null;

@@ -482,19 +443,29 @@
for (int j = 0; j < preivios.length; j++) {

long point = preivios[j];
-
- if (tprism.get(point))
+
+
+ if (backgroud.get(point))
continue;

+ if (traits.get(point))
+ continue;
+
+ logger.info("point: " + point);
+
OpenBitSet footprints = footprintsMap.get(point);
- if (footprints == null)
+ if (footprints == null) {
+ OpenBitSet s = new OpenBitSet();
+ s.set(point);
+ traverse(s);
+ nselected.set(point);
continue;
-
- if (intersectionCount(bound, footprints) == 0)
+ }
+
+ if (source != null && intersectionCount(source, footprints) == 0)
continue;
-
- if (tspectrum != null
- && intersectionCount(tspectrum, footprints) > 0) {
+
+ if (traits != null && intersectionCount(traits, footprints) > 0) {
continue;
}

@@ -502,18 +473,68 @@
}
}

- OpenBitSet min = new OpenBitSet();
- minimumOfTraits(min, nselected);
+ OpenBitSet complement = new OpenBitSet();
+ minimumOfTraits(complement, nselected);

if (logger.isLoggable(Level.FINEST)) {
StringBuilder sb = new StringBuilder();
- sb.append("t-spectrum complementary: {");
- BitUtil.format(sb, min, ",");
+ sb.append("complement: {");
+ BitUtil.format(sb, complement, ",");
sb.append("}");
logger.finest(sb.toString());
}

- return min;
+ return complement;
+ }
+
+ private void traverse(OpenBitSet s) {
+
+ OpenBitSet queue = new OpenBitSet();
+ queue.or(s);
+
+ // traverse the traits
+ OpenBitSet involved = new OpenBitSet();
+ while (true) {
+
+ long node = queue.nextSetBit(0);
+ if (node < 0)
+ break;
+
+ queue.clear(node);
+ involved.set(node);
+
+ OpenBitSet nodeFootprints = footprintsMap.get(node);
+ if (nodeFootprints == null) {
+ nodeFootprints = new OpenBitSet();
+ nodeFootprints.set(node);
+ footprintsMap.put(node, nodeFootprints);
+ }
+
+ long[] nextpoints = history.next(node);
+ if (nextpoints == null)
+ continue;
+
+ for (int j = 0; j < nextpoints.length; j++) {
+
+ long point = nextpoints[j];
+
+ OpenBitSet footprints = footprintsMap.get(point);
+ if (footprints == null) {
+ footprints = new OpenBitSet();
+ footprintsMap.put(point, footprints);
+ }
+
+ footprints.set(point);
+ footprints.or(nodeFootprints);
+
+ queue.set(point);
+ }
+ }
+
+// if (logger.isLoggable(Level.FINEST)) {
+// StringBuilder sb = new StringBuilder();
+// logger.finest(dumpStateDetail(sb).toString());
+// }
}

private void minimumOfTraits(OpenBitSet minimum, OpenBitSet nselected) {
@@ -532,10 +553,6 @@
minimum.set(p);
}
}
- }
-
- public void search() {
-
}

private StringBuilder dumpStateDetail(StringBuilder sb) {

Modified: trunk/procilege/src/main/java/merisis/traitspace/impl/TraitSpaceImpl.java
==============================================================================
--- trunk/procilege/src/main/java/merisis/traitspace/impl/TraitSpaceImpl.java (original)
+++ trunk/procilege/src/main/java/merisis/traitspace/impl/TraitSpaceImpl.java Wed Jun 13 11:52:54 2007
@@ -119,11 +119,24 @@
ctx.objective = ctx.sketch.tspectrum(ctx.objective);
}

- public void tcomplementary() {
+ public void complement() {

ProcessContext ctx = getProcessContext();

- ctx.objective = ctx.sketch.tcomplementary();
+ ctx.objective = ctx.sketch.complement(ctx.objective);
+ }
+
+
+ public void adopt() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setfocus() {
+
+ ProcessContext ctx = getProcessContext();
+
+ ctx.sketch.setFocus(ctx.objective);
}

public void roll(long roll) {

Modified: trunk/procilege/src/main/java/procilege/impl/ComputationalEntityMgr.java
==============================================================================
--- trunk/procilege/src/main/java/procilege/impl/ComputationalEntityMgr.java (original)
+++ trunk/procilege/src/main/java/procilege/impl/ComputationalEntityMgr.java Wed Jun 13 11:52:54 2007
@@ -74,6 +74,7 @@
PAL_PNORMAL_EXPR));

namePropEntities = smr.sense(new QName(PROPS_NS, PROPS_ALLENTITYS));
+
nameIsA = smr.sense(new QName(PROPS_NS, RELATIONS_ISA));

eh.ripple(new long[] {namePrivExpr}, PrivilegeFormReaction.class);
@@ -210,6 +211,9 @@

public void setIsA(Name subject, Name object) {

+ if (initialized)
+ init();
+
long sid = ((NameImpl) subject).nameId;
long oid = ((NameImpl) object).nameId;

@@ -218,14 +222,34 @@

public void unsetIsA(Name subject, Name object) {

+ if (initialized)
+ init();
+
throw new UnsupportedOperationException();
}

public boolean isa(Name subject, Name object) {

+ if (initialized)
+ init();
+
long sid = ((NameImpl) subject).nameId;
long oid = ((NameImpl) object).nameId;

return mp.exists(nameIsA, sid, oid);
+ }
+
+ public boolean equiv(long[][] a, long[][] b) {
+
+ if (initialized)
+ init();
+
+ if (!mp.proof(nameIsA, a, b))
+ return false;
+
+ if (!mp.proof(nameIsA, b, a))
+ return false;
+
+ return true;
}
}

Modified: trunk/procilege/src/main/java/procilege/impl/PrivFormAnalysisImpl.java
==============================================================================
--- trunk/procilege/src/main/java/procilege/impl/PrivFormAnalysisImpl.java (original)
+++ trunk/procilege/src/main/java/procilege/impl/PrivFormAnalysisImpl.java Wed Jun 13 11:52:54 2007
@@ -8,6 +8,8 @@
import java.util.logging.Logger;

import merisis.MerisisVM;
+import merisis.traitspace.Morphism;
+import merisis.util.BitUtil;

import org.apache.solr.util.OpenBitSet;

@@ -157,32 +159,43 @@
return false; // they aren't parellel!

// 2x2 square, [{0==I,1==J}][{0==FALSE, 1==TRUE}]
- Collection<OpenBitSet>[][] square = new Collection[][] {
- { null, null }, { null, null } };
+ // Collection<OpenBitSet>[][] square = new Collection[][] {
+ // { null, null }, { null, null } };
+
+ HashSet<OpenBitSet> t1EntGroup = new HashSet<OpenBitSet>();
+ HashSet<OpenBitSet> t2EntGroup = new HashSet<OpenBitSet>();
+ HashSet<OpenBitSet> f1EntGroup = new HashSet<OpenBitSet>();
+ HashSet<OpenBitSet> f2EntGroup = new HashSet<OpenBitSet>();

OpenBitSet bs;
bs = new OpenBitSet();
bs.set(i);
for (PrivilegeFormTerm p : pf1.functionMap.get(bs)) {
- if (available(p))
- addSquare(square[0], 1, p.getEntities());
- else
- addSquare(square[0], 0, p.getEntities());
+ if (available(p)) {
+ t1EntGroup.add(p.getEntities());
+ // addSquare(square[0], 1, p.getEntities());
+ } else {
+ f1EntGroup.add(p.getEntities());
+ // addSquare(square[0], 0, p.getEntities());
+ }
}

for (PrivilegeFormTerm p : pf2.functionMap.get(bs)) {
- if (available(p))
- addSquare(square[1], 1, p.getEntities());
- else
- addSquare(square[1], 1, p.getEntities());
+ if (available(p)) {
+ t2EntGroup.add(p.getEntities());
+ // addSquare(square[1], 1, p.getEntities());
+ } else {
+ f2EntGroup.add(p.getEntities());
+ // addSquare(square[1], 0, p.getEntities());
+ }
}

// assert the entity equivalence being inavailable
- if (!isEntitySetEquivalent(square[0][0], square[1][0]))
+ if (!isEntitySetEquivalent(f1EntGroup, f2EntGroup))
return false;

// assert the entity equivalence being available
- if (!isEntitySetEquivalent(square[0][1], square[1][1]))
+ if (!isEntitySetEquivalent(t1EntGroup, t2EntGroup))
return false;

i = pf1.reducedFunctions.nextSetBit(i + 1);
@@ -203,18 +216,18 @@
private boolean isEntitySetEquivalent(Collection<OpenBitSet> m,
Collection<OpenBitSet> n) {

- if (m == null && n == null)
- return true;
-
- if (m == null || n == null)
- return false;
-
- // TODO equivalence of isa!!!
- // boolean result = ts.isEquivalent(m.toArray(new OpenBitSet[m
- // .size()]), n.toArray(new OpenBitSet[n.size()]));
- // return result;
+ long[][] a = new long[m.size()][];
+ int i = 0;
+ for (OpenBitSet s : m) {
+ a[i++] = BitUtil.toArray(s);
+ }
+
+ long[][] b = new long[m.size()][];
+ for (OpenBitSet s : n) {
+ b[i++] = BitUtil.toArray(s);
+ }

- return false;
+ return cem.equiv(a, b);
}

private void expand(PrivilegeFormImpl pf) {

Modified: trunk/procilege/src/test/java/merisis/contentcloud/ContentCloudTest1.java
==============================================================================
--- trunk/procilege/src/test/java/merisis/contentcloud/ContentCloudTest1.java (original)
+++ trunk/procilege/src/test/java/merisis/contentcloud/ContentCloudTest1.java Wed Jun 13 11:52:54 2007
@@ -160,7 +160,7 @@
mvm.focus();
mvm.give(lbl, nm("tag"));
mvm.tprism();
- mvm.tcomplementary();
+ mvm.complement();

long[] prop1 = mvm.read();
Assert.assertNotNull(prop1);
@@ -175,7 +175,7 @@
mvm.focus();
mvm.give(nm("pdf"), nm("content-type"));
mvm.tprism();
- mvm.tcomplementary();
+ mvm.complement();
long[] prop2 = mvm.read();
if (prop2 == null)
continue;
@@ -197,7 +197,7 @@
mvm.focus();
mvm.give(lbl, nm("tag"));
mvm.tprism();
- mvm.tcomplementary();
+ mvm.complement();

long[] prop1 = mvm.read();
Assert.assertNotNull(prop1);
@@ -212,7 +212,7 @@
mvm.focus();
mvm.give(nm("pdf"), nm("content-type"));
mvm.tprism();
- mvm.tcomplementary();
+ mvm.complement();
long[] prop2 = mvm.read();
if (prop2 == null)
continue;

Added: trunk/procilege/src/test/java/merisis/traitspace/Complement1Test.java
==============================================================================
--- (empty file)
+++ trunk/procilege/src/test/java/merisis/traitspace/Complement1Test.java Wed Jun 13 11:52:54 2007
@@ -0,0 +1,40 @@
+package merisis.traitspace;
+
+import org.junit.Test;
+
+public class Complement1Test extends AbstractTraitSpaceTest {
+
+ @Test
+ public void case1() {
+
+ ht.emerge(1, 2);
+ ht.emerge(1, 3);
+ ht.emerge(2, 4);
+ ht.emerge(3, 4);
+
+ mvm.give(1);
+ mvm.source();
+ mvm.focus();
+ mvm.give(2);
+ mvm.complement();
+ assertSetEquals(ay(3), mvm.read());
+ }
+
+ @Test
+ public void case2() {
+
+ ht.emerge(1, 2);
+ ht.emerge(2, 3);
+ ht.emerge(1, 4);
+ ht.emerge(3, 5);
+ ht.emerge(4, 5);
+
+
+ mvm.give(1);
+ mvm.source();
+ mvm.focus();
+ mvm.give(2);
+ mvm.complement();
+ assertSetEquals(ay(4), mvm.read());
+ }
+}

Modified: trunk/procilege/src/test/java/merisis/traitspace/MorphismIsaTest.java
==============================================================================
--- trunk/procilege/src/test/java/merisis/traitspace/MorphismIsaTest.java (original)
+++ trunk/procilege/src/test/java/merisis/traitspace/MorphismIsaTest.java Wed Jun 13 11:52:54 2007
@@ -41,9 +41,10 @@
Assert.assertFalse(mp.exists(isa, n("b"), n("a")));
Assert.assertFalse(mp.exists(isa, n("c"), n("b")));

- Assert.assertFalse(mp.exists(isa, n("a"), n("a")));
- Assert.assertFalse(mp.exists(isa, n("b"), n("b")));
- Assert.assertFalse(mp.exists(isa, n("c"), n("c")));
+ // reflexivity
+ Assert.assertTrue(mp.exists(isa, n("a"), n("a")));
+ Assert.assertTrue(mp.exists(isa, n("b"), n("b")));
+ Assert.assertTrue(mp.exists(isa, n("c"), n("c")));
} finally {
mvm.stepout();
}

Modified: trunk/procilege/src/test/java/merisis/traitspace/MorphismProofTest.java
==============================================================================
--- trunk/procilege/src/test/java/merisis/traitspace/MorphismProofTest.java (original)
+++ trunk/procilege/src/test/java/merisis/traitspace/MorphismProofTest.java Wed Jun 13 11:52:54 2007
@@ -34,22 +34,38 @@
mp.set(isa, n("b"), n("c"));
mp.set(isa, n("d"), n("b"));
mp.set(isa, n("d"), n("e"));
+ mp.set(isa, n("d"), n("f"));

dumpHistory(0, 30);

- // ? a -> c
+ // a -> c
assertTrue(mp.proof(isa, new long[][] { { n("a") } },
new long[][] { { n("c") } }));

- // ? a -> ( c || e )
+ // a -> ( c || e )
assertTrue(mp.proof(isa, //
new long[][] { { n("a") } }, //
new long[][] { { n("c") }, { n("e") } }));

- // ? (a && d) -> ( c || e )
+ // (a && d) -> ( c || e )
assertTrue(mp.proof(isa, //
new long[][] { { n("a"), n("d") } }, //
new long[][] { { n("c") }, { n("e") } }));
+
+ // (e && f) -> c
+ assertTrue(mp.proof(isa, //
+ new long[][] { { n("e"), n("f") } }, //
+ new long[][] { { n("c") } }));
+
+ // (a && c) -> c
+ assertTrue(mp.proof(isa, //
+ new long[][] { { n("a"), n("c") } }, //
+ new long[][] { { n("c") } }));
+
+ // a -> (a && c )
+ assertTrue(mp.proof(isa, //
+ new long[][] { { n("a")} }, //
+ new long[][] { { n("a"), n("c") } }));

} finally {
mvm.stepout();

Modified: trunk/procilege/src/test/java/merisis/traitspace/MorphismTest1.java
==============================================================================
--- trunk/procilege/src/test/java/merisis/traitspace/MorphismTest1.java (original)
+++ trunk/procilege/src/test/java/merisis/traitspace/MorphismTest1.java Wed Jun 13 11:52:54 2007
@@ -60,9 +60,9 @@
n("b"), true));

// check domain
- assertSetEquals(ay(n("a"), n("b")), mp
+ assertSetEquals(ay(n("a"), n("b"), n("d")), mp
.domain(n("f1"), n("d"), true));
- assertSetEquals(ay(n("b"), n("c")), mp
+ assertSetEquals(ay(n("b"), n("c"), n("e")), mp
.domain(n("f1"), n("e"), true));

assertSetEquals(ay(n("d"), n("e")), mp.domain(n("f1"), n("f"),

Modified: trunk/procilege/src/test/java/merisis/traitspace/Spectrum1Test.java
==============================================================================
--- trunk/procilege/src/test/java/merisis/traitspace/Spectrum1Test.java (original)
+++ trunk/procilege/src/test/java/merisis/traitspace/Spectrum1Test.java Wed Jun 13 11:52:54 2007
@@ -31,7 +31,7 @@
mvm.tprism();
assertSetEquals(ay(7, 8), mvm.read());

- mvm.tcomplementary();
+ mvm.complement();
assertSetEquals(null, mvm.read());

mvm.give(1, 2);
@@ -42,7 +42,7 @@
mvm.give(4);
mvm.tprism();
assertSetEquals(ay(8), mvm.read());
- mvm.tcomplementary();
+ mvm.complement();
assertSetEquals(ay(1), mvm.read());
}
}

Modified: trunk/procilege/src/test/java/procilege/test/PrivilegeCongruentTest.java
==============================================================================
--- trunk/procilege/src/test/java/procilege/test/PrivilegeCongruentTest.java (original)
+++ trunk/procilege/src/test/java/procilege/test/PrivilegeCongruentTest.java Wed Jun 13 11:52:54 2007
@@ -38,8 +38,9 @@

z.tell("g1 := r/da0");

- z.printCategorySpace();
-
+
+ dumpHistory(0, 100);
+
z.print(z.ln("p1"));
z.print(z.ln("g1"));

Modified: trunk/procilege/src/test/java/procilege/test/pal/AbstractPalTest.java
==============================================================================
--- trunk/procilege/src/test/java/procilege/test/pal/AbstractPalTest.java (original)
+++ trunk/procilege/src/test/java/procilege/test/pal/AbstractPalTest.java Wed Jun 13 11:52:54 2007
@@ -64,7 +64,7 @@

public long nm(String name) {

- QName qn = new QName(this.getClass().getName(), name);
+ QName qn = new QName(nsuri, name);

return smr.sense(qn);
}
@@ -90,6 +90,9 @@
long[] list = ht.next(i);
if (list == null)
continue;
+
+ if (smr.introspect(i) == null)
+ continue;

sb.append(String.format("[%02d: ", i));
ftr.format(sb, new NameImpl(i));
@@ -149,6 +152,10 @@
}

return exp;
+ }
+
+ protected void isa(Name a, Name b) {
+ pe.setEntityCategory(a, b);
}

protected void def(Name name, PrivExprElement pvexpr) {

Added: trunk/procilege/src/test/java/procilege/test/pal/EntityEquivTest1.java
==============================================================================
--- (empty file)
+++ trunk/procilege/src/test/java/procilege/test/pal/EntityEquivTest1.java Wed Jun 13 11:52:54 2007
@@ -0,0 +1,43 @@
+package procilege.test.pal;
+
+import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+import procilege.impl.ComputationalEntityMgr;
+
+import com.google.inject.Inject;
+
+public class EntityEquivTest1 extends AbstractPalTest {
+
+ @Inject
+ protected ComputationalEntityMgr cem;
+
+ @Test
+ public void test1() {
+
+ assertEquals(1L, nm("d01"));
+ assertEquals(2L, nm("d02"));
+ assertEquals(3L, nm("d03"));
+ assertEquals(4L, nm("d04"));
+ assertEquals(5L, nm("d05"));
+
+ mvm.give(nm("T0"));
+ mvm.stepin();
+ try {
+
+ isa(nn("d01"), nn("d05"));
+ isa(nn("d02"), nn("d05"));
+
+ dumpHistory(0, 50);
+
+ // d1 == d5 && d1
+ assertTrue(cem.equiv(new long[][] { { nm("d01") } },
+ new long[][] { { nm("d01"), nm("d05") } }));
+
+ } finally {
+ mvm.stepout();
+ }
+ }
+}

codesite...@google.com

unread,
Jun 13, 2007, 2:56:25 PM6/13/07
to procil...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages