diff options
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java')
-rw-r--r-- | Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java | 92 |
1 files changed, 86 insertions, 6 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java index 143d3db5..c175c72a 100644 --- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.java | |||
@@ -3,6 +3,7 @@ package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder; | |||
3 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper; | 3 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper; |
4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace; | 4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace; |
5 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support; | 5 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support; |
6 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd; | ||
6 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; | 7 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; |
7 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; | 8 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; |
8 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; | 9 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; |
@@ -17,11 +18,15 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration; | |||
17 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition; | 18 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition; |
18 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; | 19 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; |
19 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference; | 20 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference; |
21 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable; | ||
20 | import hu.bme.mit.inf.dslreasoner.util.CollectionsUtil; | 22 | import hu.bme.mit.inf.dslreasoner.util.CollectionsUtil; |
21 | import java.util.ArrayList; | 23 | import java.util.ArrayList; |
22 | import java.util.Arrays; | 24 | import java.util.Arrays; |
25 | import java.util.HashMap; | ||
23 | import java.util.List; | 26 | import java.util.List; |
27 | import java.util.Map; | ||
24 | import org.eclipse.emf.common.util.EList; | 28 | import org.eclipse.emf.common.util.EList; |
29 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | ||
25 | import org.eclipse.xtext.xbase.lib.Conversions; | 30 | import org.eclipse.xtext.xbase.lib.Conversions; |
26 | import org.eclipse.xtext.xbase.lib.ExclusiveRange; | 31 | import org.eclipse.xtext.xbase.lib.ExclusiveRange; |
27 | import org.eclipse.xtext.xbase.lib.Extension; | 32 | import org.eclipse.xtext.xbase.lib.Extension; |
@@ -41,7 +46,7 @@ public class Logic2VampireLanguageMapper_RelationMapper { | |||
41 | this.base = base; | 46 | this.base = base; |
42 | } | 47 | } |
43 | 48 | ||
44 | public void _transformRelation(final RelationDeclaration r, final Logic2VampireLanguageMapperTrace trace) { | 49 | public void _transformRelation(final RelationDeclaration r, final Logic2VampireLanguageMapperTrace trace, final Logic2VampireLanguageMapper mapper) { |
45 | final List<VLSVariable> relVar2VLS = new ArrayList<VLSVariable>(); | 50 | final List<VLSVariable> relVar2VLS = new ArrayList<VLSVariable>(); |
46 | final List<VLSFunction> relVar2TypeDecComply = new ArrayList<VLSFunction>(); | 51 | final List<VLSFunction> relVar2TypeDecComply = new ArrayList<VLSFunction>(); |
47 | int _length = ((Object[])Conversions.unwrapArray(r.getParameters(), Object.class)).length; | 52 | int _length = ((Object[])Conversions.unwrapArray(r.getParameters(), Object.class)).length; |
@@ -109,19 +114,94 @@ public class Logic2VampireLanguageMapper_RelationMapper { | |||
109 | _formulas.add(comply); | 114 | _formulas.add(comply); |
110 | } | 115 | } |
111 | 116 | ||
112 | public void _transformRelation(final RelationDefinition reldef, final Logic2VampireLanguageMapperTrace trace) { | 117 | public void _transformRelation(final RelationDefinition r, final Logic2VampireLanguageMapperTrace trace, final Logic2VampireLanguageMapper mapper) { |
118 | final Map<Variable, VLSVariable> relVar2VLS = new HashMap<Variable, VLSVariable>(); | ||
119 | final List<VLSVariable> vars = CollectionLiterals.<VLSVariable>newArrayList(); | ||
120 | final List<VLSFunction> relVar2TypeDecComply = new ArrayList<VLSFunction>(); | ||
121 | int _length = ((Object[])Conversions.unwrapArray(r.getParameters(), Object.class)).length; | ||
122 | ExclusiveRange _doubleDotLessThan = new ExclusiveRange(0, _length, true); | ||
123 | for (final Integer i : _doubleDotLessThan) { | ||
124 | { | ||
125 | VLSVariable _createVLSVariable = this.factory.createVLSVariable(); | ||
126 | final Procedure1<VLSVariable> _function = (VLSVariable it) -> { | ||
127 | it.setName(this.support.toIDMultiple("V", i.toString())); | ||
128 | }; | ||
129 | final VLSVariable v = ObjectExtensions.<VLSVariable>operator_doubleArrow(_createVLSVariable, _function); | ||
130 | relVar2VLS.put(r.getVariables().get((i).intValue()), v); | ||
131 | vars.add(v); | ||
132 | TypeReference _get = r.getParameters().get((i).intValue()); | ||
133 | final Type relType = ((ComplexTypeReference) _get).getReferred(); | ||
134 | final VLSFunction varTypeComply = this.support.duplicate(CollectionsUtil.<Type, VLSFunction>lookup(relType, trace.type2Predicate), v); | ||
135 | relVar2TypeDecComply.add(varTypeComply); | ||
136 | } | ||
137 | } | ||
138 | final String[] nameArray = r.getName().split(" "); | ||
139 | String relNameVar = ""; | ||
140 | int _length_1 = nameArray.length; | ||
141 | boolean _equals = (_length_1 == 3); | ||
142 | if (_equals) { | ||
143 | relNameVar = this.support.toIDMultiple(nameArray[0], nameArray[2]); | ||
144 | } else { | ||
145 | relNameVar = r.getName(); | ||
146 | } | ||
147 | final String relName = relNameVar; | ||
148 | final VLSTerm definition = mapper.transformTerm(r.getValue(), trace, relVar2VLS); | ||
149 | final VLSTerm compliance = this.support.unfoldAnd(relVar2TypeDecComply); | ||
150 | VLSAnd _createVLSAnd = this.factory.createVLSAnd(); | ||
151 | final Procedure1<VLSAnd> _function = (VLSAnd it) -> { | ||
152 | it.setLeft(compliance); | ||
153 | it.setRight(definition); | ||
154 | }; | ||
155 | final VLSAnd compDefn = ObjectExtensions.<VLSAnd>operator_doubleArrow(_createVLSAnd, _function); | ||
156 | VLSFofFormula _createVLSFofFormula = this.factory.createVLSFofFormula(); | ||
157 | final Procedure1<VLSFofFormula> _function_1 = (VLSFofFormula it) -> { | ||
158 | it.setName(this.support.toID(relName)); | ||
159 | it.setFofRole("axiom"); | ||
160 | VLSUniversalQuantifier _createVLSUniversalQuantifier = this.factory.createVLSUniversalQuantifier(); | ||
161 | final Procedure1<VLSUniversalQuantifier> _function_2 = (VLSUniversalQuantifier it_1) -> { | ||
162 | for (final VLSVariable v : vars) { | ||
163 | EList<VLSTffTerm> _variables = it_1.getVariables(); | ||
164 | VLSVariable _duplicate = this.support.duplicate(v); | ||
165 | _variables.add(_duplicate); | ||
166 | } | ||
167 | VLSImplies _createVLSImplies = this.factory.createVLSImplies(); | ||
168 | final Procedure1<VLSImplies> _function_3 = (VLSImplies it_2) -> { | ||
169 | VLSFunction _createVLSFunction = this.factory.createVLSFunction(); | ||
170 | final Procedure1<VLSFunction> _function_4 = (VLSFunction it_3) -> { | ||
171 | it_3.setConstant(this.support.toIDMultiple("r", relName)); | ||
172 | for (final VLSVariable v_1 : vars) { | ||
173 | EList<VLSTerm> _terms = it_3.getTerms(); | ||
174 | VLSVariable _duplicate_1 = this.support.duplicate(v_1); | ||
175 | _terms.add(_duplicate_1); | ||
176 | } | ||
177 | }; | ||
178 | final VLSFunction rel = ObjectExtensions.<VLSFunction>operator_doubleArrow(_createVLSFunction, _function_4); | ||
179 | trace.relDef2Predicate.put(r, rel); | ||
180 | trace.predicate2RelDef.put(rel, r); | ||
181 | it_2.setLeft(this.support.duplicate(rel)); | ||
182 | it_2.setRight(compDefn); | ||
183 | }; | ||
184 | VLSImplies _doubleArrow = ObjectExtensions.<VLSImplies>operator_doubleArrow(_createVLSImplies, _function_3); | ||
185 | it_1.setOperand(_doubleArrow); | ||
186 | }; | ||
187 | VLSUniversalQuantifier _doubleArrow = ObjectExtensions.<VLSUniversalQuantifier>operator_doubleArrow(_createVLSUniversalQuantifier, _function_2); | ||
188 | it.setFofFormula(_doubleArrow); | ||
189 | }; | ||
190 | final VLSFofFormula relDef = ObjectExtensions.<VLSFofFormula>operator_doubleArrow(_createVLSFofFormula, _function_1); | ||
191 | EList<VLSFofFormula> _formulas = trace.specification.getFormulas(); | ||
192 | _formulas.add(relDef); | ||
113 | } | 193 | } |
114 | 194 | ||
115 | public void transformRelation(final Relation r, final Logic2VampireLanguageMapperTrace trace) { | 195 | public void transformRelation(final Relation r, final Logic2VampireLanguageMapperTrace trace, final Logic2VampireLanguageMapper mapper) { |
116 | if (r instanceof RelationDeclaration) { | 196 | if (r instanceof RelationDeclaration) { |
117 | _transformRelation((RelationDeclaration)r, trace); | 197 | _transformRelation((RelationDeclaration)r, trace, mapper); |
118 | return; | 198 | return; |
119 | } else if (r instanceof RelationDefinition) { | 199 | } else if (r instanceof RelationDefinition) { |
120 | _transformRelation((RelationDefinition)r, trace); | 200 | _transformRelation((RelationDefinition)r, trace, mapper); |
121 | return; | 201 | return; |
122 | } else { | 202 | } else { |
123 | throw new IllegalArgumentException("Unhandled parameter types: " + | 203 | throw new IllegalArgumentException("Unhandled parameter types: " + |
124 | Arrays.<Object>asList(r, trace).toString()); | 204 | Arrays.<Object>asList(r, trace, mapper).toString()); |
125 | } | 205 | } |
126 | } | 206 | } |
127 | } | 207 | } |