From be2fd000db012b3738211ebee8db36001235c918 Mon Sep 17 00:00:00 2001
From: Aren Babikian
Date: Thu, 14 Jan 2021 13:11:21 -0500
Subject: complete change of real representation BigDecimal->Double
---
.../logic/model/logiclanguage/RealLiteral.java | 8 +++----
.../impl/LogiclanguagePackageImpl.java | 2 +-
.../model/logiclanguage/impl/RealLiteralImpl.java | 17 ++++++--------
.../model/logiclanguage.ecore | 2 +-
.../model/builder/LogicModelInterpretation.xtend | 4 ++--
.../logic/model/builder/LogicProblemBuilder.xtend | 6 ++---
.../logic/model/builder/LogicSolver.xtend | 2 +-
.../model/builder/LogicStructureBuilder.xtend | 4 ++--
.../inf/dslreasoner/logic2ecore/Logic2Ecore.xtend | 15 ++++++------
.../viatra2logic/NumericDrealProblemSolver.java | 7 +++---
.../viatra2logic/NumericZ3ProblemSolver.java | 2 +-
.../partialinterpretation/RealElement.java | 8 +++----
.../impl/PartialinterpretationPackageImpl.java | 2 +-
.../impl/RealElementImpl.java | 17 ++++++--------
.../model/PartialInterpretation.ecore | 2 +-
.../InstanceModel2PartialInterpretation.xtend | 27 +++++++++++-----------
.../PartialInterpretationInitialiser.xtend | 4 ++--
.../viatrasolver/reasoner/ViatraReasoner.xtend | 2 +-
.../viatrasolver/reasoner/dse/NumericSolver.xtend | 7 +++---
.../dse/PartialModelAsLogicInterpretation.xtend | 8 ++++---
20 files changed, 70 insertions(+), 76 deletions(-)
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java
index 0ba0a6ca..fd289abb 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java
@@ -2,8 +2,6 @@
*/
package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage;
-import java.math.BigDecimal;
-
/**
*
* A representation of the model object 'Real Literal'.
@@ -30,12 +28,12 @@ public interface RealLiteral extends AtomicTerm {
*
*
* @return the value of the 'Value' attribute.
- * @see #setValue(BigDecimal)
+ * @see #setValue(double)
* @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getRealLiteral_Value()
* @model required="true"
* @generated
*/
- BigDecimal getValue();
+ double getValue();
/**
* Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral#getValue Value}' attribute.
@@ -45,6 +43,6 @@ public interface RealLiteral extends AtomicTerm {
* @see #getValue()
* @generated
*/
- void setValue(BigDecimal value);
+ void setValue(double value);
} // RealLiteral
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
index 03a679e4..48cb3efb 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
@@ -2351,7 +2351,7 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
initEAttribute(getBoolLiteral_Value(), ecorePackage.getEBoolean(), "value", null, 1, 1, BoolLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(realLiteralEClass, RealLiteral.class, "RealLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
- initEAttribute(getRealLiteral_Value(), ecorePackage.getEBigDecimal(), "value", null, 1, 1, RealLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRealLiteral_Value(), ecorePackage.getEDouble(), "value", null, 1, 1, RealLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(variableEClass, Variable.class, "Variable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getVariable_Range(), this.getTypeReference(), null, "range", null, 1, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java
index ffb2b97f..08791e2a 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java
@@ -4,9 +4,6 @@ package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl;
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage;
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral;
-
-import java.math.BigDecimal;
-
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
@@ -35,7 +32,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral {
* @generated
* @ordered
*/
- protected static final BigDecimal VALUE_EDEFAULT = null;
+ protected static final double VALUE_EDEFAULT = 0.0;
/**
* The cached value of the '{@link #getValue() Value}' attribute.
@@ -45,7 +42,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral {
* @generated
* @ordered
*/
- protected BigDecimal value = VALUE_EDEFAULT;
+ protected double value = VALUE_EDEFAULT;
/**
*
@@ -72,7 +69,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral {
* @generated
*/
@Override
- public BigDecimal getValue() {
+ public double getValue() {
return value;
}
@@ -82,8 +79,8 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral {
* @generated
*/
@Override
- public void setValue(BigDecimal newValue) {
- BigDecimal oldValue = value;
+ public void setValue(double newValue) {
+ double oldValue = value;
value = newValue;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, LogiclanguagePackage.REAL_LITERAL__VALUE, oldValue, value));
@@ -112,7 +109,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral {
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case LogiclanguagePackage.REAL_LITERAL__VALUE:
- setValue((BigDecimal)newValue);
+ setValue((Double)newValue);
return;
}
super.eSet(featureID, newValue);
@@ -142,7 +139,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral {
public boolean eIsSet(int featureID) {
switch (featureID) {
case LogiclanguagePackage.REAL_LITERAL__VALUE:
- return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ return value != VALUE_EDEFAULT;
}
return super.eIsSet(featureID);
}
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
index a91d4407..4db42c27 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
@@ -55,7 +55,7 @@
-
+
getAllRealsInStructure()
+ def SortedSet getAllRealsInStructure()
- def Map getAllRealsWithInterpretation() {
+ def Map getAllRealsWithInterpretation() {
allRealsInStructure.toMap [ real |
(LogiclanguageFactory.eINSTANCE.createRealLiteral => [value = real]) as TermDescription
]
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
index fa97cbef..c8ff0b28 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
@@ -481,9 +481,9 @@ class LogicProblemBuilder{
def Pow(TermDescription left, TermDescription right) {createPow => [leftOperand = left.toTerm rightOperand = right.toTerm]}
def asTerm(boolean value) { createBoolLiteral => [x|x.value = value] }
def asTerm(int value) { createIntLiteral => [x|x.value = value] }
- def asTerm(double value) { BigDecimal.valueOf(value).asTerm }
- def asTerm(float value) { BigDecimal.valueOf(value).asTerm }
- def asTerm(BigDecimal value) { createRealLiteral => [x|x.value = value] }
+ def asTerm(double value) { createRealLiteral => [x|x.value = value] }
+ def asTerm(float value) { createRealLiteral => [x|x.value = value] }
+// def asTerm(BigDecimal value) { createRealLiteral => [x|x.value = value] }
def asTerm(String value) { createStringLiteral => [x|x.value = value]}
def InstanceOf(TermDescription term, TypeDescriptor type) {
createInstanceOf => [
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
index e62a3cb7..51d315b4 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
@@ -96,7 +96,7 @@ public class TypeScopes {
public var minNewIntegers = 0
public var maxNewIntegers = Unlimited
- public var SortedSet knownReals = new TreeSet
+ public var SortedSet knownReals = new TreeSet
/**
* Sets the number of Reals that has to be used to solve the problem.
*/
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend
index 7ca67d83..507e4bfd 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend
@@ -146,7 +146,7 @@ class LogicStructureBuilder{
}
def protected dispatch Term toTerm(Integer o) { createIntLiteral=>[value = o] }
- def protected dispatch Term toTerm(BigDecimal o) { createRealLiteral=>[value = o]}
+ def protected dispatch Term toTerm(Double o) { createRealLiteral=>[value = o]}
def protected dispatch Term toTerm(Boolean o) { createBoolLiteral=>[value = o]}
def protected dispatch Term toTerm(SymbolicDeclaration o) { createSymbolicValue=>[symbolicReference = o]}
def public Term termDescriptiontoTerm(TermDescription term) {
@@ -171,7 +171,7 @@ class LogicStructureBuilder{
// Atomic resoulutions
def protected dispatch Object resolve(IntLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value as Integer }
def protected dispatch Object resolve(BoolLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value }
- def protected dispatch Object resolve(RealLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value as BigDecimal }
+ def protected dispatch Object resolve(RealLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value as Double }
def protected dispatch Object resolve(StringLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value }
def protected dispatch Object resolve(Not not, LogicModelInterpretation interpretation, Map variableBinding) {
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
index 8d6b565a..3a74963f 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
@@ -109,13 +109,14 @@ class Logic2Ecore {
}
def translateType(EDataType type, Object value) {
- if(type == EcorePackage.eINSTANCE.EFloat) {
- val bd = value as BigDecimal
- return bd.floatValue
- } else if( type == EcorePackage.eINSTANCE.EDouble ) {
- val bd = value as BigDecimal
- return bd.doubleValue
- } else return value
+// if(type == EcorePackage.eINSTANCE.EFloat) {
+// val bd = value as BigDecimal
+// return bd.floatValue
+// } else if( type == EcorePackage.eINSTANCE.EDouble ) {
+// val bd = value as BigDecimal
+// return bd.doubleValue
+// } else
+ return value
}
protected dispatch def Map extends TermDescription, ? extends Object> getAllElementsOfDatatype(EEnum type, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java
index 55d52031..f410cc6d 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java
@@ -171,7 +171,8 @@ public class NumericDrealProblemSolver extends NumericProblemSolver{
if (isInt) {
expr = Integer.toString(((IntegerElement) matchedObj).getValue());
} else {
- expr = Double.toString(((RealElement) matchedObj).getValue().doubleValue());
+ expr = Double.toString(((RealElement) matchedObj).getValue());
+// expr = Double.toString(((RealElement) matchedObj).getValue().doubleValue());
}
varMap.put(matchedObj, expr);
}
@@ -301,7 +302,7 @@ public class NumericDrealProblemSolver extends NumericProblemSolver{
private Map parseDrealOutput(List output) {
Map res = new HashMap();
- String re = "(\\w+) : \\[([0-9\\-.e]+), ([0-9\\-.e]+)\\]";
+ String re = "(\\w+) : \\[([0-9\\-+.e]+), ([0-9\\-+.e]+)\\]";
Pattern p = Pattern.compile(re);
for (String varVal : output) {
Matcher m = p.matcher(varVal);
@@ -350,7 +351,7 @@ public class NumericDrealProblemSolver extends NumericProblemSolver{
} else {
String varName = varMap.get(obj);
String value = solMap.get(varName);
- sol.put(obj, Integer.parseInt(value));
+ sol.put(obj, Double.parseDouble(value));
}
} else {
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
index ab7f6ddc..db33804e 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
@@ -174,7 +174,7 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{
int value = ((IntegerElement) matchedObj).getValue();
expr = (ArithExpr) ctx.mkInt(value);
} else {
- double value = ((RealElement) matchedObj).getValue().doubleValue();
+ double value = ((RealElement) matchedObj).getValue();
expr = (ArithExpr) ctx.mkReal(String.valueOf(value));
}
varMap.put(matchedObj, expr);
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java
index 65b40808..c30314d5 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java
@@ -2,8 +2,6 @@
*/
package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
-import java.math.BigDecimal;
-
/**
*
* A representation of the model object 'Real Element'.
@@ -30,12 +28,12 @@ public interface RealElement extends PrimitiveElement {
*
*
* @return the value of the 'Value' attribute.
- * @see #setValue(BigDecimal)
+ * @see #setValue(double)
* @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getRealElement_Value()
* @model required="true"
* @generated
*/
- BigDecimal getValue();
+ double getValue();
/**
* Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement#getValue Value}' attribute.
@@ -45,6 +43,6 @@ public interface RealElement extends PrimitiveElement {
* @see #getValue()
* @generated
*/
- void setValue(BigDecimal value);
+ void setValue(double value);
} // RealElement
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
index 1ea3a11d..cb97c5ad 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
@@ -1069,7 +1069,7 @@ public class PartialinterpretationPackageImpl extends EPackageImpl implements Pa
initEAttribute(getIntegerElement_Value(), ecorePackage.getEInt(), "value", null, 1, 1, IntegerElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(realElementEClass, RealElement.class, "RealElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
- initEAttribute(getRealElement_Value(), ecorePackage.getEBigDecimal(), "value", null, 1, 1, RealElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRealElement_Value(), ecorePackage.getEDouble(), "value", null, 1, 1, RealElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(stringElementEClass, StringElement.class, "StringElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getStringElement_Value(), ecorePackage.getEString(), "value", null, 1, 1, StringElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java
index 67cff5a2..d1ff754f 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java
@@ -4,9 +4,6 @@ package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.pa
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement;
-
-import java.math.BigDecimal;
-
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
@@ -35,7 +32,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
* @ordered
*/
- protected static final BigDecimal VALUE_EDEFAULT = null;
+ protected static final double VALUE_EDEFAULT = 0.0;
/**
* The cached value of the '{@link #getValue() Value}' attribute.
@@ -45,7 +42,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
* @ordered
*/
- protected BigDecimal value = VALUE_EDEFAULT;
+ protected double value = VALUE_EDEFAULT;
/**
*
@@ -72,7 +69,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
*/
@Override
- public BigDecimal getValue() {
+ public double getValue() {
return value;
}
@@ -82,8 +79,8 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
*/
@Override
- public void setValue(BigDecimal newValue) {
- BigDecimal oldValue = value;
+ public void setValue(double newValue) {
+ double oldValue = value;
value = newValue;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.REAL_ELEMENT__VALUE, oldValue, value));
@@ -112,7 +109,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case PartialinterpretationPackage.REAL_ELEMENT__VALUE:
- setValue((BigDecimal)newValue);
+ setValue((Double)newValue);
return;
}
super.eSet(featureID, newValue);
@@ -142,7 +139,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
public boolean eIsSet(int featureID) {
switch (featureID) {
case PartialinterpretationPackage.REAL_ELEMENT__VALUE:
- return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ return value != VALUE_EDEFAULT;
}
return super.eIsSet(featureID);
}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
index 47d54258..b2398acd 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
@@ -83,7 +83,7 @@
-
+
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
index cb5b587f..94959025 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
@@ -13,7 +13,6 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.Par
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.Problem2PartialInterpretationTrace
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
-import java.math.BigDecimal
import java.util.HashMap
import java.util.HashSet
import java.util.List
@@ -148,7 +147,7 @@ class InstanceModel2PartialInterpretation {
private def createTypeScopesFromKnownAttributeValues(List objects, Set attributesUsed) {
val Set integers = new HashSet
- val Set reals = new HashSet
+ val Set reals = new HashSet
val Set strings = new HashSet
for(object: objects) {
for(attribute : object.eClass.EAllAttributes.filter[attributesUsed.contains(it)]) {
@@ -170,28 +169,28 @@ class InstanceModel2PartialInterpretation {
it.knownStrings += strings
]
}
- private def dispatch shortValue(Boolean value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Boolean value, Set integers, Set reals, Set strings) {
// Do nothing
}
- private def dispatch shortValue(Integer value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Integer value, Set integers, Set reals, Set strings) {
integers += value
}
- private def dispatch shortValue(Short value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Short value, Set integers, Set reals, Set strings) {
integers += Integer.valueOf(value)
}
- private def dispatch shortValue(Float value, Set integers, Set reals, Set strings) {
- reals += BigDecimal.valueOf(value)
+ private def dispatch shortValue(Float value, Set integers, Set reals, Set strings) {
+ reals += Double.valueOf(value)
}
- private def dispatch shortValue(Double value, Set integers, Set reals, Set strings) {
- reals += BigDecimal.valueOf(value)
+ private def dispatch shortValue(Double value, Set integers, Set reals, Set strings) {
+ reals += value
}
- private def dispatch shortValue(String value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(String value, Set integers, Set reals, Set strings) {
strings += value
}
- private def dispatch shortValue(Void value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Void value, Set integers, Set reals, Set strings) {
// Do nothing
}
- private def dispatch shortValue(Object value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Object value, Set integers, Set reals, Set strings) {
// Do nothing
}
@@ -220,11 +219,11 @@ class InstanceModel2PartialInterpretation {
}
dispatch protected def translateValue(Double value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
- BigDecimal.valueOf(value).lookup(partialInterpretationTrace.primitiveValues.realMap)
+ value.lookup(partialInterpretationTrace.primitiveValues.realMap)
}
dispatch protected def translateValue(Float value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
- BigDecimal.valueOf(value).lookup(partialInterpretationTrace.primitiveValues.realMap)
+ Double.valueOf(value).lookup(partialInterpretationTrace.primitiveValues.realMap)
}
dispatch protected def translateValue(String value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
index 20ff58f2..92db5c18 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
@@ -52,7 +52,7 @@ import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
PartialIntegerInterpretation integerInterpretation
Map integerMap
PartialRealInterpretation realInterpretation
- Map realMap
+ Map realMap
PartialStringInterpretation stringInterpretation
Map stringMap
}
@@ -146,7 +146,7 @@ class PartialInterpretationInitialiser {
return integerInterpretation
}
- def protected initReals(PartialInterpretation partialInterpretation, SortedSet knownReals, int minNewReals, int maxNewReals) {
+ def protected initReals(PartialInterpretation partialInterpretation, SortedSet knownReals, int minNewReals, int maxNewReals) {
val realInterpretation = createPartialRealInterpretation
partialInterpretation.partialtypeinterpratation += realInterpretation
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
index 144e5e6f..d386241d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
@@ -110,7 +110,7 @@ class ViatraReasoner extends LogicReasoner {
new SolutionStore(numberOfRequiredSolutions)
}
solutionStore.registerSolutionFoundHandler(new LoggerSolutionFoundHandler(viatraConfig))
- val numericSolver = new NumericSolver(method, viatraConfig, false)
+ val numericSolver = new NumericSolver(method, viatraConfig, true)//was formerly hard-coded to false for caching
val solutionSaver = method.solutionSaver
solutionSaver.numericSolver = numericSolver
val solutionCopier = solutionSaver.solutionCopier
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
index 4b0ea544..ab3e6601 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
@@ -98,11 +98,12 @@ class NumericSolver {
finalResult=true
} else {
val propagatedConstraints = new HashMap
+ println("------ Any matches?")
for(entry : matches.entrySet) {
val constraint = entry.key
- //println(constraint)
+ println("------ " + constraint)
val allMatches = entry.value.allMatches.map[it.toArray]
- //println(allMatches.toList)
+ println("------ " + allMatches.toList)
propagatedConstraints.put(constraint,allMatches)
}
if(propagatedConstraints.values.forall[empty]) {
@@ -198,6 +199,6 @@ class NumericSolver {
def protected dispatch fillWithValue(BooleanElement e, Object value) {e.valueSet=true e.value=value as Boolean}
def protected dispatch fillWithValue(IntegerElement e, Object value) {e.valueSet=true e.value=value as Integer}
- def protected dispatch fillWithValue(RealElement e, Object value) {e.valueSet=true e.value=BigDecimal.valueOf(value as Double) }
+ def protected dispatch fillWithValue(RealElement e, Object value) {e.valueSet=true e.value=value as Double }
def protected dispatch fillWithValue(StringElement e, Object value) {e.valueSet=true e.value=value as String}
}
\ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
index b48d0831..4484052d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
@@ -36,7 +36,7 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
val Map elementBackwardTrace
val Map booleanForwardTrace
val Map integerForwardTrace
- val Map realForwardTrace
+ val Map realForwardTrace
val Map stringForwardTrace
new(PartialInterpretation partialInterpretation, Map forwardMap) {
@@ -51,7 +51,9 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
integerForwardTrace = initialisePrimitiveElementTrace(
0,[it+1],[it],partialInterpretation.newElements.filter(IntegerElement),[it.value])
realForwardTrace = initialisePrimitiveElementTrace(
- BigDecimal::ZERO,[it.add(BigDecimal.ONE)],[it],partialInterpretation.newElements.filter(RealElement),[it.value])
+ 0.0,[it+1.0],[it],partialInterpretation.newElements.filter(RealElement),[it.value])
+// realForwardTrace = initialisePrimitiveElementTrace(
+// BigDecimal::ZERO,[it.add(BigDecimal.ONE)],[it],partialInterpretation.newElements.filter(RealElement),[it.value])
stringForwardTrace = initialisePrimitiveElementTrace(
0,[it+1],['''StringĀ«itĀ»'''],partialInterpretation.newElements.filter(StringElement),[it.value])
}
@@ -116,7 +118,7 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
def dispatch elementLookupForward(Integer e) {
this.integerForwardTrace.get(e)
}
- def dispatch elementLookupForward(BigDecimal e) {
+ def dispatch elementLookupForward(Double e) {
this.realForwardTrace.get(e)
}
def dispatch elementLookupForward(String e) {
--
cgit v1.2.3-54-g00ecf