aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/formulacanonization/FormulaCanoniser.xtend
blob: 182f3a3a0ad1b12180ee52d84107f56e34b91540 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.formulacanonization

import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDefinition
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDefinition
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
import java.util.List
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.SymbolicValue
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable

/**
 * Translates a Terms into format
 * <P(x1,...,xn)> := Bodies(x1,...,xn)
 * <Bodies(x1,...,xn)> := <Body(x1,...,xn)> | <Body(x1,...,xn)> or <Bodies(x1,...,xn)>
 * <Body(x1,...,xn)> := Exists y1,...,ym : <Constraints(x1,...,xn,y1,....,ym)>
 * <Constraints(x1,...,xn)> := Constraint(x1,...xn) | Constraint(x1,...,xn) and <Constraints(x1,...,xn)>   
 */
class FormulaCanoniser {
//	def canonise(
//		List<Assertion> assertions,
//		List<RelationDefinition> relations)
//	{
//		
//	}
//	
//	
//	def canoniseToConstraintBlock(Term predicate, List<Variable> variables) {
//		val 
//	}
//	
//	def freeVariables(Term t) {
//		val subterms = #[t]+t.eAllContents.toList
//		val variables = subterms.filter(Variable).toSet
//		val variableReferences = subterms.filter(SymbolicValue).filter[it.symbolicReference instanceof Variable]
//		val freeVariables = variableReferences.filter[!variables.contains(it.symbolicReference)]
//		return freeVariables.map
//	}
}