public boolean equals(Object obj) {
		if (obj instanceof Rule) {
			boolean equal = true;
			Rule otherRule = (Rule) obj;
			for (Specie s : this.lhs) {
				if (!otherRule.lhs.contains(s)) {
					return false;
				}
			}
			for (Specie s : this.rhs) {
				if (!otherRule.rhs.contains(s)) {
					return false;
				}
			}
			for (Specie s : otherRule.lhs) {
				if (!this.lhs.contains(s)) {
					return false;
				}
			}
			for (Specie s : otherRule.rhs) {
				if (!this.rhs.contains(s)) {
					return false;
				}
			}
			return equal;
		} else {
			return false;
		}
	}