diff --git a/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java b/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java
index 25383f2082d0295b00aee2c026ddf8a01751ff09..a436d927392cc8f2794336ffc6bf4cc2236f80aa 100644
--- a/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java
+++ b/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java
@@ -121,6 +121,24 @@ public abstract class BitSetDisjunctiveRelation<T extends BaseRelation> extends
 	return relset.isEmpty();
     }
 
+    public boolean entails( BitSetDisjunctiveRelation<T> dr ) {
+	if ( dr == this ) return true;
+	if ( dr == null ) return false;
+	// This does allocate but is certainly faster and simpler
+	BitSet bs = (BitSet)relset.clone();
+	bs.andNot( ((BitSetDisjunctiveRelation<?>)dr).getRelations() );
+	return bs.isEmpty();
+	/*
+	// This does not allocate but is certainly slower
+	BitSet bs = ((BitSetDisjunctiveRelation<?>)dr).getRelations();
+	int size = relset.size(); // is it correct?
+	for( int i=0; i < size; i++ ) {
+	    if ( bs.get(i) && !relset.get(i) ) return false;
+	}
+	return true;
+	*/
+    }
+
     /** This is kept for displayig more correctly the result **/
     public void write( PrintWriter writer ) {
 	Iterator<T> brit = iterator();
diff --git a/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java b/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java
index 45c423fd5bdf9e76459a18a2bbd48eb404a52306..1864ec4c04146afc3111ddd4622add87df094b2d 100644
--- a/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java
+++ b/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java
@@ -45,5 +45,7 @@ public interface DisjunctiveRelation<T extends BaseRelation> extends Relation, I
 
     public boolean isEmpty();
 
+    //public boolean entails( DisjunctiveRelation<T> dr );
+
 }