diff options
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend')
-rw-r--r-- | Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend index 4b7ea3d0..e5dfbf08 100644 --- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend | |||
@@ -19,13 +19,14 @@ class Logic2VampireLanguageMapper_ScopeMapper { | |||
19 | val VLSVariable variable = createVLSVariable => [it.name = "A"] | 19 | val VLSVariable variable = createVLSVariable => [it.name = "A"] |
20 | 20 | ||
21 | // 1. make a list of constants equaling the min number of specified objects | 21 | // 1. make a list of constants equaling the min number of specified objects |
22 | val List<VLSConstant> instances = newArrayList | 22 | val localInstances = newArrayList |
23 | for (var i = 0; i < config.typeScopes.minNewElements; i++) { | 23 | for (var i = 0; i < config.typeScopes.minNewElements; i++) { |
24 | val num = i + 1 | 24 | val num = i + 1 |
25 | val cst = createVLSConstant => [ | 25 | val cst = createVLSConstant => [ |
26 | it.name = "o" + num | 26 | it.name = "o" + num |
27 | ] | 27 | ] |
28 | instances.add(cst) | 28 | trace.uniqueInstances.add(cst) |
29 | localInstances.add(cst) | ||
29 | } | 30 | } |
30 | 31 | ||
31 | // TODO: specify for the max | 32 | // TODO: specify for the max |
@@ -37,14 +38,14 @@ class Logic2VampireLanguageMapper_ScopeMapper { | |||
37 | it.fofFormula = createVLSUniversalQuantifier => [ | 38 | it.fofFormula = createVLSUniversalQuantifier => [ |
38 | it.variables += support.duplicate(variable) | 39 | it.variables += support.duplicate(variable) |
39 | // check below | 40 | // check below |
40 | it.operand = createVLSEquivalent => [ | 41 | it.operand = createVLSImplies => [ |
41 | it.left = support.topLevelTypeFunc | 42 | it.left = support.unfoldOr(localInstances.map [ i | |
42 | it.right = support.unfoldOr(instances.map [ i | | ||
43 | createVLSEquality => [ | 43 | createVLSEquality => [ |
44 | it.left = createVLSVariable => [it.name = variable.name] | 44 | it.left = createVLSVariable => [it.name = variable.name] |
45 | it.right = i | 45 | it.right = i |
46 | ] | 46 | ] |
47 | ]) | 47 | ]) |
48 | it.right = support.topLevelTypeFunc | ||
48 | ] | 49 | ] |
49 | ] | 50 | ] |
50 | ] | 51 | ] |
@@ -55,7 +56,7 @@ class Logic2VampireLanguageMapper_ScopeMapper { | |||
55 | val uniqueness = createVLSFofFormula => [ | 56 | val uniqueness = createVLSFofFormula => [ |
56 | it.name = "typeUniqueness" | 57 | it.name = "typeUniqueness" |
57 | it.fofRole = "axiom" | 58 | it.fofRole = "axiom" |
58 | it.fofFormula = support.establishUniqueness(instances) | 59 | it.fofFormula = support.establishUniqueness(trace.uniqueInstances) |
59 | ] | 60 | ] |
60 | trace.specification.formulas += uniqueness | 61 | trace.specification.formulas += uniqueness |
61 | } | 62 | } |