Newer
Older
ResourceDependencyLogic / src / inference / equivalence / SemanticEquivalenceRelation.java
package inference.equivalence;

import lombok.Getter;
import models.formulas.EquationFormula;
import models.terms.EvaluatableTerm;

@Getter
public class SemanticEquivalenceRelation {
	
	private EvaluatableTerm leftSideHand;
	private EvaluatableTerm rightSideHand;
	private int order;
	
	public SemanticEquivalenceRelation(EvaluatableTerm lsh, EvaluatableTerm rsh, int order) {
		leftSideHand = lsh;
		rightSideHand = rsh;
		this.order = order;
	}
	
	public SemanticEquivalenceRelation(EquationFormula formula, int order) {
		leftSideHand = formula.getLeftSideHand();
		rightSideHand = formula.getRightSideHand();
		this.order = order;
	}
	
	public SemanticEquivalenceRelation linearRightNormalized() {
		return new SemanticEquivalenceRelation(leftSideHand.linearRightNormalize(), rightSideHand.linearRightNormalize(), order);
	}
	
	
	@Override
	public String toString() {
		return leftSideHand.toString() + " =(" + order + ")= " + rightSideHand.toString();
	}
	
	@Override
	public boolean equals(Object another) {
		if (! (another instanceof SemanticEquivalenceRelation)) {
			return false;
		}
		SemanticEquivalenceRelation relation = (SemanticEquivalenceRelation) another;
		return leftSideHand.equals(relation.getLeftSideHand()) && rightSideHand.equals(relation.getRightSideHand());
	}
	
	@Override
	public int hashCode() {
		return toString().hashCode();
	}
}