Newer
Older
RDLProofSystem / src / test / java / inferencerule / InTest.java
package inferencerule;

import static org.junit.jupiter.api.Assertions.*;

import java.util.Set;

import org.junit.jupiter.api.Test;

import inference.In;
import models.algebra.Constant;
import models.algebra.Variable;
import models.formulas.meta.MetaEquationFormula;
import models.terms.DependencyTerm;
import models.terms.Resource;
import models.terms.meta.MetaDependencyTerm;
import models.terms.meta.MetaEvaluatableTermVariable;
import models.terms.meta.MetaResource;

public class InTest {

	Resource a = new Resource("a", 1);
	Resource b = new Resource("b", 1);
	Resource c = new Resource("c", 1);
	Resource d = new Resource("d", 1);
	Resource e = new Resource("e", 1);
	Resource f = new Resource("f", 1);
	Resource g = new Resource("g", 1);
	Resource h = new Resource("h", 1);
	Resource i = new Resource("i", 1);
	Resource j = new Resource("j", 1);
	
	
	@Test
	void DomainMemberShipDeriveTest() {
		DependencyTerm t1 = new DependencyTerm(a, b, c);
		DependencyTerm t2 = new DependencyTerm(d, b, c);
		In in1 = new In(t1, t2);
		Set<MetaEquationFormula> res1 =  in1.deriveRule();
		assertFalse(res1.isEmpty());
		MetaEvaluatableTermVariable se = new MetaEvaluatableTermVariable(new Variable("se"));
		MetaResource C = new MetaResource(new Variable("c"), new Constant("0"));
		MetaDependencyTerm mt1 = new MetaDependencyTerm(se, d, a);
		MetaDependencyTerm mt2 = new MetaDependencyTerm(mt1, b, c);
		MetaEquationFormula eq1 = new MetaEquationFormula(mt2, C);
		//domain membership
		assertTrue(res1.contains(eq1));
		
		
		In in2 = new In(a, b);
		Set<MetaEquationFormula> res2 = in2.deriveRule();
		assertFalse(res2.isEmpty());
		MetaDependencyTerm mt3 = new MetaDependencyTerm(se, b, a);
		assertTrue(res2.contains(new MetaEquationFormula(mt3, C)));
		
		DependencyTerm t3 = new DependencyTerm(a, b, c);
		DependencyTerm t4 = new DependencyTerm(d, e, f);
		DependencyTerm t5 = new DependencyTerm(t3, g, h);
		DependencyTerm t6 = new DependencyTerm(t4, g, h);
		In in3 = new In(t5, t6);
		Set<MetaEquationFormula> res3 = in3.deriveRule();
		assertFalse(res3.isEmpty());
		MetaDependencyTerm mt4 = new MetaDependencyTerm(new MetaDependencyTerm(se, t4, t3), g, h);
		assertTrue(res3.contains(new MetaEquationFormula(mt4, C)));
		
		DependencyTerm t7 = new DependencyTerm(a, b, c, d, e);
		DependencyTerm t8 = new DependencyTerm(f, b, c, d, e);
		In in4 = new In(t7, t8);
		Set<MetaEquationFormula> res4 = in4.deriveRule();
		assertFalse(res4.isEmpty());
		MetaDependencyTerm mt5 = new MetaDependencyTerm(new MetaDependencyTerm(se, f, a), b, c, d, e);
		assertTrue(res4.contains(new MetaEquationFormula(mt5, C)));
		
		DependencyTerm t9 = new DependencyTerm(new DependencyTerm(a, b, c, d, e), f, g, h, i);
		DependencyTerm t10 = new DependencyTerm(new DependencyTerm(j, b, c, d, e), f, g, h, i);
		In in5 = new In(t9, t10);
		Set<MetaEquationFormula> res5 = in5.deriveRule();
		assertFalse(res5.isEmpty());
		MetaDependencyTerm mt6 = new MetaDependencyTerm(new MetaDependencyTerm(new MetaDependencyTerm(se, j, a), b, c, d, e), f, g, h, i);
		assertTrue(res5.contains(new MetaEquationFormula(mt6, C)));
	}
	
}