package equivalence;
import models.terms.Resource;
import utils.Utils;
public class SubstituteTest {
Resource A = new Resource("A", Utils.INT, 2);
Resource Ap = new Resource("A'", Utils.INT, 2);
Resource B = new Resource("B", Utils.INT, 2);
Resource Bp = new Resource("B'", Utils.INT, 2);
Resource C = new Resource("C", Utils.INT, 2);
Resource Cp = new Resource("C'", Utils.INT, 2);
Resource D = new Resource("D", Utils.INT, 2);
Resource E = new Resource("E", Utils.INT, 1);
Resource F = new Resource("F", Utils.INT, 1);
Resource G = new Resource("G", Utils.INT, 0);
// @Test
// void SubstituteTest1() {
// MetaResource v = new MetaResource(new Variable("v"), Utils.parse("n + 1"));
// MetaEvaluatableTermVariable t = new MetaEvaluatableTermVariable(new Variable("t"), Utils.parse("n"));
// t.setLinearRightNormalizedType(LinearRightNormalizedType.LINEAR_RIGHT_NORMALIZED);
// MetaSemanticEquivalenceRelation r1 = new MetaSemanticEquivalenceRelation(new MetaRDLTerm(v, v, t), t, new Variable("n"));
// DependencyTerm t1 = new DependencyTerm(A, A, E);
// var tmp = r1.substitute(t1, List.of(Ap, Bp, C, Cp, D, E, F, G));
// for(var a : tmp) {
// System.out.println(a);
// }
// }
// @Test
// void SubstituteTest2() {
// MetaEvaluatableTermVariable t = new MetaEvaluatableTermVariable(new Variable("t"), Utils.parse("n + 1"));
// t.setLinearRightNormalizedType(LinearRightNormalizedType.LINEAR_RIGHT_NORMALIZED);
// MetaEvaluatableTermVariable tp = new MetaEvaluatableTermVariable(new Variable("t'"), Utils.parse("n + 1"));
// tp.setLinearRightNormalizedType(LinearRightNormalizedType.LINEAR_RIGHT_NORMALIZED);
// MetaSemanticEquivalenceRelation r1 = new MetaSemanticEquivalenceRelation(t, tp, Utils.parse("n + 1"));
// DependencyTerm t1 = new DependencyTerm(A, B, C);
// DependencyTerm t2 = new DependencyTerm(Ap, Bp, Cp);
// SemanticEquivalenceRelation r2 = new SemanticEquivalenceRelation(t1, t2, 2);
// MetaResource v = new MetaResource(new Variable("v"), Utils.parse("n + 1"));
// MetaEvaluatableTermVariable s = new MetaEvaluatableTermVariable(new Variable("s"), OrderConstraint.LT, Utils.parse("n + 1"));
// MetaSemanticEquivalenceRelation r3 = new MetaSemanticEquivalenceRelation(
// new MetaRDLTerm(t, v, s),
// new MetaRDLTerm(tp, v, s),
// Utils.parse("n")
// );
//
// Map<Variable, RDLTerm> binding = new HashMap<>();
// Map<Variable, OrderVariableConstraint> orderConstraint = new HashMap<>();
// r1.isMatchedBy(r2, binding, orderConstraint);
// var tmp = r3.substitute(binding, orderConstraint, List.of(D, E, F, G));
// System.out.println();
// System.out.println(binding);
// for(var a : tmp) {
// System.out.println(a);
// }
// }
}