diff options
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend')
-rw-r--r-- | Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend index ab92b42f..e69f0d51 100644 --- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend | |||
@@ -1,17 +1,18 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder | 1 | package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder |
2 | 2 | ||
3 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression | 3 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction |
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable | ||
5 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm | 4 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm |
6 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable | 5 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable |
7 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory | 6 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory |
7 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference | ||
8 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression | ||
9 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable | ||
8 | import java.util.ArrayList | 11 | import java.util.ArrayList |
9 | import java.util.HashMap | 12 | import java.util.HashMap |
10 | import java.util.List | 13 | import java.util.List |
11 | import java.util.Map | 14 | import java.util.Map |
12 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference | ||
13 | import org.eclipse.emf.common.util.EList | 15 | import org.eclipse.emf.common.util.EList |
14 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term | ||
15 | 16 | ||
16 | class Logic2VampireLanguageMapper_Support { | 17 | class Logic2VampireLanguageMapper_Support { |
17 | private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE | 18 | private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE |
@@ -25,6 +26,19 @@ class Logic2VampireLanguageMapper_Support { | |||
25 | ids.split("\\s+").join("_") | 26 | ids.split("\\s+").join("_") |
26 | } | 27 | } |
27 | 28 | ||
29 | def protected VLSVariable duplicate(VLSVariable vrbl) { | ||
30 | return createVLSVariable => [it.name = vrbl.name] | ||
31 | } | ||
32 | |||
33 | def protected VLSFunction topLevelTypeFunc() { | ||
34 | return createVLSFunction => [ | ||
35 | it.constant = "object" | ||
36 | it.terms += createVLSVariable => [ | ||
37 | it.name = "A" | ||
38 | ] | ||
39 | ] | ||
40 | } | ||
41 | |||
28 | // Support Functions | 42 | // Support Functions |
29 | // booleans | 43 | // booleans |
30 | // AND and OR | 44 | // AND and OR |
@@ -41,7 +55,6 @@ class Logic2VampireLanguageMapper_Support { | |||
41 | } | 55 | } |
42 | 56 | ||
43 | def protected VLSTerm unfoldOr(List<? extends VLSTerm> operands) { | 57 | def protected VLSTerm unfoldOr(List<? extends VLSTerm> operands) { |
44 | |||
45 | // if(operands.size == 0) {basically return true} | 58 | // if(operands.size == 0) {basically return true} |
46 | /*else*/ if (operands.size == 1) { | 59 | /*else*/ if (operands.size == 1) { |
47 | return operands.head | 60 | return operands.head |
@@ -56,20 +69,21 @@ class Logic2VampireLanguageMapper_Support { | |||
56 | 69 | ||
57 | def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList<Term> operands, | 70 | def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList<Term> operands, |
58 | Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { | 71 | Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { |
59 | if(operands.size == 1) { return m.transformTerm(operands.head,trace,variables) } | 72 | if (operands.size == 1) { |
60 | else if(operands.size > 1) { | 73 | return m.transformTerm(operands.head, trace, variables) |
61 | val notEquals = new ArrayList<VLSTerm>(operands.size*operands.size/2) | 74 | } else if (operands.size > 1) { |
62 | for(i:0..<operands.size) { | 75 | val notEquals = new ArrayList<VLSTerm>(operands.size * operands.size / 2) |
63 | for(j: i+1..<operands.size) { | 76 | for (i : 0 ..< operands.size) { |
64 | notEquals+=createVLSInequality=>[ | 77 | for (j : i + 1 ..< operands.size) { |
65 | it.left= m.transformTerm(operands.get(i),trace,variables) | 78 | notEquals += createVLSInequality => [ |
66 | it.right = m.transformTerm(operands.get(j),trace,variables) | 79 | it.left = m.transformTerm(operands.get(i), trace, variables) |
80 | it.right = m.transformTerm(operands.get(j), trace, variables) | ||
67 | ] | 81 | ] |
68 | } | 82 | } |
69 | } | 83 | } |
70 | return notEquals.unfoldAnd | 84 | return notEquals.unfoldAnd |
71 | } | 85 | } else |
72 | else throw new UnsupportedOperationException('''Logic operator with 0 operands!''') | 86 | throw new UnsupportedOperationException('''Logic operator with 0 operands!''') |
73 | } | 87 | } |
74 | 88 | ||
75 | // Symbolic | 89 | // Symbolic |
@@ -105,7 +119,6 @@ class Logic2VampireLanguageMapper_Support { | |||
105 | ] | 119 | ] |
106 | typedefs.add(eq) | 120 | typedefs.add(eq) |
107 | } | 121 | } |
108 | |||
109 | 122 | ||
110 | createVLSUniversalQuantifier => [ | 123 | createVLSUniversalQuantifier => [ |
111 | it.variables += variableMap.values | 124 | it.variables += variableMap.values |