occam-verify-cli 1.0.405 → 1.0.414

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/lib/context/file.js +3 -3
  2. package/lib/context/local.js +3 -3
  3. package/lib/context/release.js +2 -2
  4. package/lib/context/temporary.js +103 -54
  5. package/lib/mixins/statement/verify.js +2 -2
  6. package/lib/mixins/step/unify.js +2 -2
  7. package/lib/node/argument.js +2 -2
  8. package/lib/node/assumption.js +6 -6
  9. package/lib/node/frame.js +19 -7
  10. package/lib/node/judgement.js +8 -1
  11. package/lib/node/statement.js +34 -15
  12. package/lib/node/substitution/term.js +3 -11
  13. package/lib/node/term.js +20 -8
  14. package/lib/nonTerminalNode.js +3 -3
  15. package/lib/ontology/assertion/contained.js +7 -7
  16. package/lib/ontology/assertion/defined.js +8 -8
  17. package/lib/ontology/assertion/subproof.js +3 -3
  18. package/lib/ontology/assumption.js +49 -45
  19. package/lib/ontology/combinator.js +3 -3
  20. package/lib/ontology/constructor.js +3 -3
  21. package/lib/ontology/equality.js +4 -4
  22. package/lib/ontology/equivalence.js +2 -2
  23. package/lib/ontology/frame.js +37 -12
  24. package/lib/ontology/judgement.js +13 -6
  25. package/lib/ontology/metavariable.js +75 -76
  26. package/lib/ontology/propertyRelation.js +2 -2
  27. package/lib/ontology/reference.js +33 -4
  28. package/lib/ontology/signature.js +2 -2
  29. package/lib/ontology/statement.js +33 -8
  30. package/lib/ontology/step.js +4 -4
  31. package/lib/ontology/substitution/frame.js +13 -15
  32. package/lib/ontology/substitution/statement.js +31 -32
  33. package/lib/ontology/substitution/term.js +26 -25
  34. package/lib/ontology/substitution.js +2 -2
  35. package/lib/ontology/substitutions.js +4 -4
  36. package/lib/ontology/term.js +26 -12
  37. package/lib/ontology/variable.js +2 -2
  38. package/lib/process/equate.js +322 -0
  39. package/lib/process/unify.js +623 -0
  40. package/lib/process/verify.js +332 -0
  41. package/lib/utilities/brackets.js +3 -8
  42. package/lib/utilities/context.js +4 -14
  43. package/lib/utilities/json.js +18 -1
  44. package/lib/utilities/pass.js +68 -0
  45. package/lib/utilities/substitutions.js +11 -16
  46. package/package.json +2 -2
  47. package/src/context/file.js +2 -2
  48. package/src/context/local.js +2 -2
  49. package/src/context/release.js +1 -1
  50. package/src/context/temporary.js +124 -54
  51. package/src/mixins/statement/verify.js +3 -1
  52. package/src/mixins/step/unify.js +0 -1
  53. package/src/node/argument.js +1 -1
  54. package/src/node/assumption.js +4 -4
  55. package/src/node/frame.js +19 -5
  56. package/src/node/judgement.js +7 -0
  57. package/src/node/statement.js +35 -13
  58. package/src/node/substitution/term.js +4 -14
  59. package/src/node/term.js +20 -6
  60. package/src/nonTerminalNode.js +1 -1
  61. package/src/ontology/assertion/contained.js +6 -6
  62. package/src/ontology/assertion/defined.js +7 -7
  63. package/src/ontology/assertion/subproof.js +1 -1
  64. package/src/ontology/assumption.js +52 -57
  65. package/src/ontology/combinator.js +1 -1
  66. package/src/ontology/constructor.js +1 -1
  67. package/src/ontology/equality.js +3 -3
  68. package/src/ontology/equivalence.js +1 -1
  69. package/src/ontology/frame.js +44 -10
  70. package/src/ontology/judgement.js +8 -3
  71. package/src/ontology/metavariable.js +108 -102
  72. package/src/ontology/propertyRelation.js +3 -2
  73. package/src/ontology/reference.js +39 -1
  74. package/src/ontology/signature.js +3 -3
  75. package/src/ontology/statement.js +38 -4
  76. package/src/ontology/step.js +7 -7
  77. package/src/ontology/substitution/frame.js +13 -17
  78. package/src/ontology/substitution/statement.js +45 -48
  79. package/src/ontology/substitution/term.js +19 -19
  80. package/src/ontology/substitution.js +3 -2
  81. package/src/ontology/substitutions.js +3 -3
  82. package/src/ontology/term.js +26 -5
  83. package/src/ontology/variable.js +3 -2
  84. package/src/process/equate.js +212 -0
  85. package/src/process/unify.js +634 -0
  86. package/src/process/verify.js +204 -0
  87. package/src/utilities/brackets.js +2 -11
  88. package/src/utilities/context.js +1 -21
  89. package/src/utilities/json.js +19 -0
  90. package/src/utilities/{unifier.js → pass.js} +17 -1
  91. package/src/utilities/substitutions.js +10 -20
  92. package/lib/unifier/equantional.js +0 -170
  93. package/lib/unifier/intrinsicLevel.js +0 -144
  94. package/lib/unifier/metaLevel.js +0 -197
  95. package/lib/unifier/metavariable.js +0 -140
  96. package/lib/unifier/statementWithCombinator.js +0 -177
  97. package/lib/unifier/termWithConstructor.js +0 -145
  98. package/lib/unifier.js +0 -241
  99. package/lib/utilities/arguments.js +0 -28
  100. package/lib/utilities/frame.js +0 -18
  101. package/lib/utilities/metavariable.js +0 -18
  102. package/lib/utilities/statement.js +0 -18
  103. package/lib/utilities/unification.js +0 -109
  104. package/lib/utilities/unifier.js +0 -51
  105. package/lib/utilities/variable.js +0 -18
  106. package/lib/verifier/combinator.js +0 -158
  107. package/lib/verifier.js +0 -219
  108. package/src/unifier/equantional.js +0 -90
  109. package/src/unifier/intrinsicLevel.js +0 -52
  110. package/src/unifier/metaLevel.js +0 -151
  111. package/src/unifier/metavariable.js +0 -50
  112. package/src/unifier/statementWithCombinator.js +0 -114
  113. package/src/unifier/termWithConstructor.js +0 -56
  114. package/src/unifier.js +0 -183
  115. package/src/utilities/arguments.js +0 -21
  116. package/src/utilities/frame.js +0 -13
  117. package/src/utilities/metavariable.js +0 -13
  118. package/src/utilities/statement.js +0 -13
  119. package/src/utilities/unification.js +0 -136
  120. package/src/utilities/variable.js +0 -13
  121. package/src/verifier/combinator.js +0 -72
  122. package/src/verifier.js +0 -150
@@ -1,114 +0,0 @@
1
- "use strict";
2
-
3
- import ontology from "../ontology";
4
- import Unifier from "../unifier";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const termNodeQuery = nodeQuery("/term"),
9
- typeNodeQuery = nodeQuery("/type"),
10
- frameNodeQuery = nodeQuery("/frame"),
11
- metaTypeNodeQuery = nodeQuery("/metaType"),
12
- statementNodeQuery = nodeQuery("/statement");
13
-
14
- class StatementWithCombinatorUnifier extends Unifier {
15
- unify(combinatorStatementNode, statementNode, assignments, stated, generalContext, specificContext) {
16
- let statementUnifiesWithCombinator;
17
-
18
- const generalNonTerminalNode = combinatorStatementNode, ///
19
- specificNonTerminalNode = statementNode, ///
20
- nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, assignments, stated, generalContext, specificContext);
21
-
22
- statementUnifiesWithCombinator = nonTerminalNodeUnifies; ///
23
-
24
- return statementUnifiesWithCombinator;
25
- };
26
-
27
- static maps = [
28
- {
29
- generalNodeQuery: metaTypeNodeQuery,
30
- specificNodeQuery: statementNodeQuery,
31
- unify: (generalMetaTypeNode, specificStatementNode, assignments, stated, generalContext, specificContext) => {
32
- let unifies;
33
-
34
- const { Statement, MetaType } = ontology,
35
- metaTypeNode = generalMetaTypeNode, ///
36
- statementNode = specificStatementNode; ///
37
-
38
- let context;
39
-
40
- context = generalContext; ///
41
-
42
- const metaType = MetaType.fromMetaTypeNode(metaTypeNode, context);
43
-
44
- context = specificContext; ///
45
-
46
- const statement = Statement.fromStatementNode(statementNode, context),
47
- statementVerifiesGivenType = statement.verifyGivenMetaType(metaType, assignments, stated, context);
48
-
49
- unifies = statementVerifiesGivenType;
50
-
51
- return unifies;
52
- }
53
- },
54
- {
55
- generalNodeQuery: metaTypeNodeQuery,
56
- specificNodeQuery: frameNodeQuery,
57
- unify: (generalMetaTypeNode, specificFrameNode, assignments, stated, generalContext, specificContext) => {
58
- let unifies;
59
-
60
- const { Frame, MetaType } = ontology,
61
- metaTypeNode = generalMetaTypeNode, ///
62
- frameNode = specificFrameNode; ///
63
-
64
- let context;
65
-
66
- context = generalContext; ///
67
-
68
- const metaType = MetaType.fromMetaTypeNode(metaTypeNode, context);
69
-
70
- context = specificContext; ///
71
-
72
- const frame = Frame.fromFrameNode(frameNode, context),
73
- frameVerifiesGivenType = frame.verifyGivenMetaType(metaType, assignments, stated, context);
74
-
75
- unifies = frameVerifiesGivenType;
76
-
77
- return unifies;
78
- }
79
- },
80
- {
81
- generalNodeQuery: typeNodeQuery,
82
- specificNodeQuery: termNodeQuery,
83
- unify: (generalTypeNode, specificTermNode, assignments, stated, generalContext, specificContext) => {
84
- let unifies = false;
85
-
86
- const { Term } = ontology,
87
- typeNode = generalTypeNode, ///
88
- termNode = specificTermNode, ///
89
- nominalTypeName = typeNode.getNominalTypeName();
90
-
91
- let context;
92
-
93
- context = generalContext; ///
94
-
95
- const type = context.findTypeByNominalTypeName(nominalTypeName);
96
-
97
- context = specificContext; ///
98
-
99
- const term = Term.fromTermNode(termNode, context),
100
- termVerifiesGivenType = term.verifyGivenType(type, generalContext, specificContext);
101
-
102
- if (termVerifiesGivenType) {
103
- unifies = true;
104
- }
105
-
106
- return unifies;
107
- }
108
- }
109
- ];
110
- }
111
-
112
- const statementWithCombinatorUnifier = new StatementWithCombinatorUnifier();
113
-
114
- export default statementWithCombinatorUnifier;
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- import ontology from "../ontology";
4
- import Unifier from "../unifier";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const termNodeQuery = nodeQuery("/term"),
9
- typeNodeQuery = nodeQuery("/type");
10
-
11
- class TermWithConstructorUnifier extends Unifier {
12
- unify(constructorTermNode, termNode, context) {
13
- let termUnifiesWithConstructor;
14
-
15
- const generalNonTerminalNode = constructorTermNode, ///
16
- specificNonTerminalNode = termNode, ///
17
- nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
18
-
19
- termUnifiesWithConstructor = nonTerminalNodeUnifies; ///
20
-
21
- return termUnifiesWithConstructor;
22
- };
23
-
24
- static maps = [
25
- {
26
- generalNodeQuery: typeNodeQuery,
27
- specificNodeQuery: termNodeQuery,
28
- unify: (generalTypeNode, specificTermNode, context) => {
29
- let unifies = false;
30
-
31
- const { Term } = ontology,
32
- typeNode = generalTypeNode, ///
33
- nominalTypeName = typeNode.getNominalTypeName(),
34
- type = context.findTypeByNominalTypeName(nominalTypeName);
35
-
36
- if (type !== null) {
37
- const termNode = specificTermNode, ///
38
- term = Term.fromTermNode(termNode, context),
39
- generalContext = context, ///
40
- specificContext = context, ///
41
- termVerifiesGivenType = term.verifyGivenType(type, generalContext, specificContext);
42
-
43
- if (termVerifiesGivenType) {
44
- unifies = true;
45
- }
46
- }
47
-
48
- return unifies;
49
- }
50
- }
51
- ];
52
- }
53
-
54
- const termWithConstructorUnifier = new TermWithConstructorUnifier();
55
-
56
- export default termWithConstructorUnifier;
package/src/unifier.js DELETED
@@ -1,183 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "./utilities/query";
4
- import { isLastRemainingArgumentFunction } from "./utilities/arguments";
5
- import { terminalNodeMapFromNodes, areTerminalNodeMapsEqual } from "./utilities/unifier";
6
-
7
- const nonTerminalNodeQuery = nodeQuery("/*");
8
-
9
- export default class Unifier {
10
- unify(generalNode, specificNode, ...remainingArguments) {
11
- let unifies;
12
-
13
- const nodeUnifies = this.unifyNode(generalNode, specificNode, ...remainingArguments);
14
-
15
- unifies = nodeUnifies; ///
16
-
17
- return unifies;
18
- }
19
-
20
- unifyNode(generalNode, specificNode, ...remainingArguments) {
21
- let nodeUnifies = false;
22
-
23
- const generalNodeTerminalNode = generalNode.isTerminalNode(),
24
- specificNodeTerminalNode = specificNode.isTerminalNode(),
25
- generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
26
- specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
27
-
28
- if (false) {
29
- ///
30
- } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
31
- const generalTerminalNode = generalNode, ///
32
- specificTerminalNode = specificNode, ///
33
- terminalNodeUnifies = this.unifyTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
34
-
35
- nodeUnifies = terminalNodeUnifies; ///
36
- } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
37
- const generalNonTerminalNode = generalNode, ///
38
- specificNonTerminalNode = specificNode, ///
39
- nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
40
-
41
- nodeUnifies = nonTerminalNodeUnifies; ///
42
- }
43
-
44
- return nodeUnifies;
45
- }
46
-
47
- unifyChildNodes(generalChildNodes, specificChildNodes, ...remainingArguments) {
48
- let childNodesUnify = false;
49
-
50
- const generalChildNodesLength = generalChildNodes.length,
51
- specificChildNodesLength = specificChildNodes.length;
52
-
53
- if (generalChildNodesLength === specificChildNodesLength) {
54
- const specificTerminalNodeMap = terminalNodeMapFromNodes(specificChildNodes),
55
- generalTerminalNodeMap = terminalNodeMapFromNodes(generalChildNodes),
56
- terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
57
-
58
- if (terminalNodeMapsEqual) {
59
- const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
60
-
61
- if (lastRemainingArgumentFunction) {
62
- const index = 0,
63
- childNodesUnifyAhead = this.unifyChildNodesAhead(index, generalChildNodes, specificChildNodes,...remainingArguments);
64
-
65
- childNodesUnify = childNodesUnifyAhead; ///
66
- } else {
67
- childNodesUnify = generalChildNodes.every((generalChildNode, index) => {
68
- const specificChildNode = specificChildNodes[index],
69
- specificNode = specificChildNode, ///
70
- generalNode = generalChildNode, ///
71
- nodeUnifies = this.unifyNode(generalNode, specificNode, ...remainingArguments);
72
-
73
- if (nodeUnifies) {
74
- return true;
75
- }
76
- });
77
- }
78
- }
79
- }
80
-
81
- return childNodesUnify;
82
- }
83
-
84
- unifyTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) { ///
85
- let terminalNodeUnifies;
86
-
87
- const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
88
-
89
- if (lastRemainingArgumentFunction) {
90
- const unifyAhead = remainingArguments.pop(),
91
- unifiesAhead = unifyAhead();
92
-
93
- terminalNodeUnifies = unifiesAhead; ///
94
-
95
- remainingArguments.push(unifiesAhead);
96
- } else {
97
- terminalNodeUnifies = true;
98
- }
99
-
100
- return terminalNodeUnifies;
101
- }
102
-
103
- unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
104
- let nonTerminalNodeUnifies;
105
-
106
- let { maps } = this.constructor;
107
-
108
- maps = [ ///
109
- ...maps,
110
- {
111
- generalNodeQuery: nonTerminalNodeQuery,
112
- specificNodeQuery: nonTerminalNodeQuery,
113
- unify: (generalNode, specificNode, ...remainingArguments) => {
114
- let nonTerminalNodeUnifies;
115
-
116
- const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
117
- specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
118
-
119
- if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
120
- const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
121
- specificNonTerminalNodeChildNode = specificNonTerminalNode.getChildNodes(),
122
- generalChildNodes = generalNonTerminalNodeChildNodes, ///
123
- specificChildNodes = specificNonTerminalNodeChildNode, ///
124
- childNodesUnify = this.unifyChildNodes(generalChildNodes, specificChildNodes, ...remainingArguments);
125
-
126
- nonTerminalNodeUnifies = childNodesUnify; ///
127
- }
128
-
129
- return nonTerminalNodeUnifies;
130
- }
131
- }
132
- ]
133
-
134
- let nodeUnifies = false;
135
-
136
- maps.some((map) => {
137
- const { generalNodeQuery, specificNodeQuery, unify } = map;
138
-
139
- const generalNode = generalNodeQuery(generalNonTerminalNode), ///
140
- specificNode = specificNodeQuery(specificNonTerminalNode); ///
141
-
142
- if ((generalNode !== null) && (specificNode !== null)) {
143
- nodeUnifies = unify(generalNode, specificNode, ...remainingArguments);
144
-
145
- return true;
146
- }
147
- });
148
-
149
- nonTerminalNodeUnifies = nodeUnifies; ///
150
-
151
- return nonTerminalNodeUnifies;
152
- }
153
-
154
- unifyChildNodesAhead(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
155
- let childNodesUnify;
156
-
157
- const unifyAhead = remainingArguments.pop(), ///
158
- generalChildNodesLength = generalChildNodes.length;
159
-
160
- if (index === generalChildNodesLength) {
161
- const unifiesAhead = unifyAhead();
162
-
163
- childNodesUnify = unifiesAhead; ///
164
- } else {
165
- const generalChildNode = generalChildNodes[index],
166
- specificChildNode = specificChildNodes[index],
167
- generalNode = generalChildNode, ///
168
- specificNode = specificChildNode, ///
169
- nodeUnifies = this.unifyNode(generalNode, specificNode, ...remainingArguments, () => {
170
- remainingArguments.push(unifyAhead); ///
171
-
172
- const aheadIndex = index + 1,
173
- childNodesUnifyAhead = this.unifyChildNodesAhead(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
174
-
175
- return childNodesUnifyAhead;
176
- });
177
-
178
- childNodesUnify = nodeUnifies; ///
179
- }
180
-
181
- return childNodesUnify;
182
- }
183
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- import { arrayUtilities } from "necessary";
4
-
5
- import { FUNCTION } from "../constants";
6
-
7
- const { last } = arrayUtilities;
8
-
9
- export function isLastRemainingArgumentFunction(remainingArguments) {
10
- let lastRemainingArgumentFunction = false;
11
-
12
- const remainingArgumentsLength = remainingArguments.length;
13
-
14
- if (remainingArgumentsLength > 0) {
15
- const lastRemainingArgument = last(remainingArguments);
16
-
17
- lastRemainingArgumentFunction = (typeof lastRemainingArgument === FUNCTION);
18
- }
19
-
20
- return lastRemainingArgumentFunction;
21
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "../utilities/query";
4
-
5
- const frameMetavariableNameNodeQuery = nodeQuery("/frame/assumption!/metavariable!/@name!");
6
-
7
- export function frameMetavariableNameFromFrameNode(frmaeNode) {
8
- const frameMetavariableNameTerminalNode = frameMetavariableNameNodeQuery(frmaeNode),
9
- frameMetavariableNameTerminalNodeContent = frameMetavariableNameTerminalNode.getContent(),
10
- frameMetavariableName = frameMetavariableNameTerminalNodeContent; ///
11
-
12
- return frameMetavariableName;
13
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "../utilities/query";
4
-
5
- const metavariableNameNodeQuery = nodeQuery("/metavariable/@name!");
6
-
7
- export function metavariableNameFromMetavariableNode(metavariableNode) {
8
- const metavariableNameTerminalNode = metavariableNameNodeQuery(metavariableNode),
9
- metavariableNameTerminalNodeContent = metavariableNameTerminalNode.getContent(),
10
- metavariableName = metavariableNameTerminalNodeContent; ///
11
-
12
- return metavariableName;
13
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "../utilities/query";
4
-
5
- const statementMetavariableNameNodeQuery = nodeQuery("/statement/metavariable!/@name!");
6
-
7
- export function statementMetavariableNameFromFrameNode(frmaeNode) {
8
- const statementMetavariableNameTerminalNode = statementMetavariableNameNodeQuery(frmaeNode),
9
- statementMetavariableNameTerminalNodeContent = statementMetavariableNameTerminalNode.getContent(),
10
- statementMetavariableName = statementMetavariableNameTerminalNodeContent; ///
11
-
12
- return statementMetavariableName;
13
- }
@@ -1,136 +0,0 @@
1
- "use string";
2
-
3
- import TemporaryContext from "../context/temporary";
4
- import metaLevelUnifier from "../unifier/metaLevel";
5
- import metavariableUnifier from "../unifier/metavariable";
6
- import intrinsicLevelUnifier from "../unifier/intrinsicLevel";
7
- import termWithConstructorUnifier from "../unifier/termWithConstructor";
8
- import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
9
-
10
- export function unifyStatement(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
11
- let statementUnifies = false;
12
-
13
- const generalStatementNode = generalStatement.getNode(),
14
- specificStatementNode = specificStatement.getNode(),
15
- generalNonTerminalNode = generalStatementNode, ///
16
- specificNonTerminalNode = specificStatementNode, ///
17
- unifiesAtMetaLevel = metaLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
18
-
19
- if (unifiesAtMetaLevel) {
20
- statementUnifies = true;
21
- }
22
-
23
- return statementUnifies;
24
- }
25
-
26
- export function unifySubstitution(generalSubstitution, specificSubstitution, substitutions, generalContext, specificContext) {
27
- let substitutionUnifies = false;
28
-
29
- const generalSubstitutionNode = generalSubstitution.getNode(),
30
- specificSubstitutionNode = specificSubstitution.getNode(),
31
- generalNonTerminalNode = generalSubstitutionNode, ///
32
- specificNonTerminalNode = specificSubstitutionNode,
33
- unifiesAtMetaLevel = metaLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
34
-
35
- if (unifiesAtMetaLevel) {
36
- substitutionUnifies = true;
37
- }
38
-
39
- return substitutionUnifies;
40
- }
41
-
42
- export function unifyMetavariable(generalMetavariable, specificMetavariable, generalContext, specificContext) {
43
- let metavariableUnifies;
44
-
45
- const generalMetavariableNode = generalMetavariable.getNode(),
46
- specificMetavariableNode = specificMetavariable.getNode(),
47
- generalMetavariableTokens = generalMetavariable.getTokens(),
48
- specificMetavariableTokens = specificMetavariable.getTokens();
49
-
50
- generalContext = contextFromTokens(generalMetavariableTokens, generalContext); ///
51
-
52
- specificContext = contextFromTokens(specificMetavariableTokens, specificContext); ///
53
-
54
- metavariableUnifies = metavariableUnifier.unify(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext);
55
-
56
- return metavariableUnifies;
57
- }
58
-
59
- export function unifyTermWithConstructor(term, constructor, context) {
60
- let termUnifiesWithConstructor;
61
-
62
- const termNode = term.getNode(),
63
- constructorTerm = constructor.getTerm(),
64
- constructorTermNode = constructorTerm.getNode();
65
-
66
- termUnifiesWithConstructor = termWithConstructorUnifier.unify(constructorTermNode, termNode, context);
67
-
68
- return termUnifiesWithConstructor;
69
- }
70
-
71
- export function unifyStatementIntrinsically(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
72
- let metavariableUnifiesIntrinsically;
73
-
74
- const generalStatementNode = generalStatement.getNode(),
75
- specificStatementNode = specificStatement.getNode(),
76
- generalStatementTokens = generalStatement.getTokens(),
77
- specificStatementTokens = specificStatement.getTokens();
78
-
79
- generalContext = contextFromTokens(generalStatementTokens, generalContext); ///
80
-
81
- specificContext = contextFromTokens(specificStatementTokens, specificContext); ///
82
-
83
- const generalNonTerminalNode = generalStatementNode, ///
84
- specificNonTerminalNode = specificStatementNode; ///
85
-
86
- metavariableUnifiesIntrinsically = intrinsicLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
87
-
88
- return metavariableUnifiesIntrinsically;
89
- }
90
-
91
- export function unifyStatementWithCombinator(statement, combinator, assignments, stated, context) {
92
- let statementUnifiesWithCombinator;
93
-
94
- const statementNode = statement.getNode(),
95
- combinatorStatement = combinator.getStatement(),
96
- combinatorStatementNode = combinatorStatement.getNode(),
97
- combinatorStatementTokens = combinatorStatement.getTokens();
98
-
99
- const specificContext = context; ///
100
-
101
- context = contextFromTokens(combinatorStatementTokens, context); ///
102
-
103
- const generalContext = context; ///
104
-
105
- statementUnifiesWithCombinator = statementWithCombinatorUnifier.unify(combinatorStatementNode, statementNode, assignments, stated, generalContext, specificContext);
106
-
107
- return statementUnifiesWithCombinator;
108
- }
109
-
110
- export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext) {
111
- let metavariableUnifiesIntrinsically;
112
-
113
- const generalMetavariableNode = generalMetavariable.getNode(),
114
- specificMetavariableNode = specificMetavariable.getNode(),
115
- generalMetavariableTokens = generalMetavariable.getTokens(),
116
- specificMetavariableTokens = specificMetavariable.getTokens();
117
-
118
- generalContext = contextFromTokens(generalMetavariableTokens, generalContext); ///
119
-
120
- specificContext = contextFromTokens(specificMetavariableTokens, specificContext); ///
121
-
122
- const generalNonTerminalNode = generalMetavariableNode, ///
123
- specificNonTerminalNode = specificMetavariableNode; ///
124
-
125
- metavariableUnifiesIntrinsically = intrinsicLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
126
-
127
- return metavariableUnifiesIntrinsically;
128
- }
129
-
130
- function contextFromTokens(tokens, context) {
131
- const temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
132
-
133
- context = temporaryContext; ///
134
-
135
- return context;
136
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "../utilities/query";
4
-
5
- const termVariableIdentifierNodeQuery = nodeQuery("/term/variable!/@identifier!");
6
-
7
- export function termVariableIdentifierFromTermNode(TermNode) {
8
- const termVariableIdentifierTerminalNode = termVariableIdentifierNodeQuery(TermNode),
9
- termVariableIdentifierTerminalNodeContent = termVariableIdentifierTerminalNode.getContent(),
10
- termVariableIdentifier = termVariableIdentifierTerminalNodeContent; ///
11
-
12
- return termVariableIdentifier;
13
- }
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- import ontology from "../ontology";
4
- import Verifier from "../verifier";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const termNodeQuery = nodeQuery("/term"),
9
- typeNodeQuery = nodeQuery("/type"),
10
- statementNodeQuery = nodeQuery("/statement");
11
-
12
- class CombinatorVerifier extends Verifier {
13
- verifyStatement(statementNode, context) {
14
- let statementVerifiesAsCombinator;
15
-
16
- const nonTerminalNode = statementNode, ///
17
- childNodes = nonTerminalNode.getChildNodes(),
18
- childNodesVerify = this.verifyChildNodes(childNodes, context);
19
-
20
- statementVerifiesAsCombinator = childNodesVerify; ///
21
-
22
- return statementVerifiesAsCombinator;
23
- }
24
-
25
- static maps = [
26
- {
27
- nodeQuery: statementNodeQuery,
28
- verify: (statementNode, context) => {
29
- const { Statement } = ontology,
30
- statement = Statement.fromStatementNode(statementNode, context),
31
- assignments = null,
32
- stated = false,
33
- statementVerifies = statement.verify(assignments, stated, context);
34
-
35
- return statementVerifies;
36
- }
37
- },
38
- {
39
- nodeQuery: termNodeQuery,
40
- verify: (termNode, context) => {
41
- const { Term } = ontology,
42
- term = Term.fromTermNode(termNode, context),
43
- termVerifies = term.verify(context, () => {
44
- const verifiesAhead = true;
45
-
46
- return verifiesAhead;
47
- });
48
-
49
- return termVerifies;
50
- }
51
- },
52
- {
53
- nodeQuery: typeNodeQuery,
54
- verify: (typeNode, context) => {
55
- let typeVerifies = false;
56
-
57
- const nominalTypeName = typeNode.getNominalTypeName(),
58
- typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
59
-
60
- if (typePresent) {
61
- typeVerifies = true;
62
- }
63
-
64
- return typeVerifies;
65
- }
66
- }
67
- ];
68
- }
69
-
70
- const combinatorVerifier = new CombinatorVerifier();
71
-
72
- export default combinatorVerifier;