occam-verify-cli 0.0.268 → 0.0.270

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.
@@ -186,6 +186,12 @@ class FileContext {
186
186
  return labelPresent;
187
187
  }
188
188
 
189
+ isMetaAssertionPresent(metaAssertion) {
190
+ const metaAssertionPresent = false;
191
+
192
+ return metaAssertionPresent;
193
+ }
194
+
189
195
  isTypePresentByTypeName(typeName) {
190
196
  const type = this.findTypeByTypeName(typeName),
191
197
  typePresent = (type !== null);
@@ -193,12 +199,6 @@ class FileContext {
193
199
  return typePresent;
194
200
  }
195
201
 
196
- isMetastatementNodePresent(metaStatementNode) {
197
- const metastatementNodePresent = false;
198
-
199
- return metastatementNodePresent;
200
- }
201
-
202
202
  isVariablePresentByVariableName(variableName) {
203
203
  const variable = this.findVariableByVariableName(variableName),
204
204
  variablePresent = (variable !== null);
@@ -230,10 +230,6 @@ class FileContext {
230
230
  this.constructors.push(constructor);
231
231
  }
232
232
 
233
- setInAntecedent(inAntecedent) {
234
- ///
235
- }
236
-
237
233
  static fromPackageContextAndFilePath(packageContext, filePath) {
238
234
  const fileContent = packageContext.getFileContent(filePath),
239
235
  content = fileContent, ///
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
 
3
- const { nodeAsString } = require("../utilities/string");
4
-
5
3
  class MetaproofContext {
6
- constructor(context, derived, metastatementNodes) {
4
+ constructor(context, derived, metaAssertions) {
7
5
  this.context = context;
8
6
  this.derived = derived;
9
- this.metastatementNodes = metastatementNodes;
7
+ this.metaAssertions = metaAssertions;
10
8
  }
11
9
 
12
10
  getContext() {
@@ -17,8 +15,8 @@ class MetaproofContext {
17
15
  return this.derived;
18
16
  }
19
17
 
20
- getMetastatementNodes() {
21
- return this.metastatementNodes;
18
+ getMetaAssertions() {
19
+ return this.metaAssertions;
22
20
  }
23
21
 
24
22
  getRules() { return this.context.getRules(); }
@@ -41,47 +39,41 @@ class MetaproofContext {
41
39
 
42
40
  isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
43
41
 
44
- isMetastatementNodePresent(metaStatementNode) {
45
- const metastatementNodeA = metaStatementNode; ///
42
+ isMetaAssertionPresent(metaAssertion) {
43
+ const metaAssertionA = metaAssertion; ///
46
44
 
47
- let metastatementNodePresent = this.metastatementNodes.some((metaStatementNode) => {
48
- const metastatementNodeB = metaStatementNode, ///
49
- metastatementNodeAString = nodeAsString(metastatementNodeA),
50
- metastatementNodeBString = nodeAsString(metastatementNodeB),
51
- matches = (metastatementNodeAString === metastatementNodeBString);
45
+ let metaAssertionPresent = this.metaAssertions.some((metaAssertion) => {
46
+ const metaAssertionB = metaAssertion, ///
47
+ matches = metaAssertionA.match(metaAssertionB);
52
48
 
53
49
  if (matches) {
54
50
  return true;
55
51
  }
56
52
  });
57
53
 
58
- if (!metastatementNodePresent) {
59
- metastatementNodePresent = this.context.isMetastatementNodePresent(metaStatementNode);
54
+ if (!metaAssertionPresent) {
55
+ metaAssertionPresent = this.context.isMetaAssertionPresent(metaAssertion);
60
56
  }
61
57
 
62
- return metastatementNodePresent;
58
+ return metaAssertionPresent;
63
59
  }
64
60
 
65
61
  isVariablePresentByVariableName(variableName) { return this.context.isVariablePresentByVariableName(variableName); }
66
62
 
67
63
  setDerived(derived) {
68
- if (derived) {
69
- this.metastatementNodes.pop();
70
- }
71
-
72
64
  this.derived = derived;
73
65
  }
74
66
 
75
67
  addRule(rule) { this.context.addRule(rule); }
76
68
 
77
- addMetastatementNode(metastatementNode) {
78
- this.metastatementNodes.push(metastatementNode);
69
+ addMetaAssertion(metaAssertion) {
70
+ this.metaAssertions.push(metaAssertion);
79
71
  }
80
72
 
81
73
  static fromContext(context) {
82
74
  const derived = false,
83
- metastatementNodes = [],
84
- metaproofContext = new MetaproofContext(context, derived, metastatementNodes);
75
+ metaAssertions = [],
76
+ metaproofContext = new MetaproofContext(context, derived, metaAssertions);
85
77
 
86
78
  return metaproofContext;
87
79
  }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ const { nodeQuery } = require("./utilities/query");
4
+
5
+ const metastatementNodeQuery = nodeQuery("/*/metastatement!");
6
+
7
+ class MetaAssertion {
8
+ constructor(metaSubproofNode, metastatementNode) {
9
+ this.metaSubproofNode = metaSubproofNode;
10
+ this.metastatementNode = metastatementNode;
11
+ }
12
+
13
+ getNonTerminalNode() {
14
+ const nonTerminalNode = (this.metastatementNode !== null) ?
15
+ this.metastatementNode :
16
+ null;
17
+
18
+ return nonTerminalNode;
19
+ }
20
+
21
+ getMetaSubproofNode() {
22
+ return this.metaSubproofNode;
23
+ }
24
+
25
+ getMetastatementNode() {
26
+ return this.metastatementNode;
27
+ }
28
+
29
+ match(metaAssertion) {
30
+ let matches = false;
31
+
32
+ const metastatementNode = metaAssertion.getMetastatementNode();
33
+
34
+ if ((metastatementNode !== null) && (this.metastatementNode !== null)) {
35
+ const nonTerminalNode = this.metastatementNode, ///
36
+ metaAssertionNonTerminalNode = metastatementNode, ///
37
+ metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
38
+
39
+ matches = metaAssertionNonTerminalNodeMatches; ///
40
+ }
41
+
42
+ return matches;
43
+ }
44
+
45
+ static fromMetaSubproofNode(metaSubproofNode) {
46
+ const metastatementNode = null,
47
+ metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
48
+
49
+ return metaAssertion;
50
+ }
51
+
52
+ static fromQualifiedMetastatementNode(qualifiedMetastatementNode) {
53
+ const metaSubproofNode = null,
54
+ metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
55
+ metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
56
+
57
+ return metaAssertion;
58
+ }
59
+
60
+ static fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode) {
61
+ const metaSubproofNode = null,
62
+ metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
63
+ metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
64
+
65
+ return metaAssertion;
66
+ }
67
+ }
68
+
69
+ module.exports = MetaAssertion;
70
+
71
+ function matchMetaAssertionNode(metaAssertionNode, node) {
72
+ let metaAssertionNodeMatches = false;
73
+
74
+ const nodeTerminalNode = node.isTerminalNode(),
75
+ ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
76
+
77
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
78
+ if (nodeTerminalNode) {
79
+ const terminalNode = node, ///
80
+ metaAssertionTerminalNode = metaAssertionNode, ///
81
+ metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
82
+
83
+ metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
84
+ } else {
85
+ const nonTerminalNode = node, ///
86
+ metaAssertionNonTerminalNode = metaAssertionNode, ///
87
+ metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
88
+
89
+ metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
90
+ }
91
+ }
92
+
93
+ return metaAssertionNodeMatches;
94
+ }
95
+
96
+ function matchMetaAssertionChildNodes(metaAssertionChildNodes, childNodes) {
97
+ let metaAssertionChildNodesMatches = false;
98
+
99
+ const childNodesLength = childNodes.length,
100
+ metaAssertionChildNodesLength = metaAssertionChildNodes.length;
101
+
102
+ if (childNodesLength === metaAssertionChildNodesLength) {
103
+ metaAssertionChildNodesMatches = childNodes.every((childNode, index) => {
104
+ const metaAssertionChildNode = metaAssertionChildNodes[index],
105
+ metaAssertionNode = metaAssertionChildNode, ///
106
+ node = childNode, ///
107
+ metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
108
+
109
+ if (metaAssertionNodeMatches) {
110
+ return true;
111
+ }
112
+ })
113
+ }
114
+
115
+ return metaAssertionChildNodesMatches;
116
+ }
117
+
118
+ function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
119
+ let metaAssertionTerminalNodeMatches = false;
120
+
121
+ const matches = metaAssertionTerminalNode.match(terminalNode);
122
+
123
+ if (matches) {
124
+ metaAssertionTerminalNodeMatches = true;
125
+ }
126
+
127
+ return metaAssertionTerminalNodeMatches;
128
+ }
129
+
130
+ function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
131
+ let metaAssertionNonTerminalNodeMatches = false;
132
+
133
+ const ruleName = nonTerminalNode.getRuleName(),
134
+ metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
135
+
136
+ if (ruleName === metaAssertionRuleName) {
137
+ const childNodes = nonTerminalNode.getChildNodes(),
138
+ metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
139
+ metaAssertionChildNodesMatches = matchMetaAssertionChildNodes(metaAssertionChildNodes, childNodes);
140
+
141
+ metaAssertionNonTerminalNodeMatches = metaAssertionChildNodesMatches; ///
142
+ }
143
+
144
+ return metaAssertionNonTerminalNodeMatches;
145
+ }
package/bin/rule.js CHANGED
@@ -23,15 +23,15 @@ class Rule {
23
23
  }
24
24
 
25
25
  matchMetastatement(metastatementNode, context) {
26
- let metastatementNodes = context.getMetastatementNodes();
26
+ let metaAssertions = context.getMetaAssertions();
27
27
 
28
28
  const premisesLength = this.premises.length,
29
29
  start = -premisesLength;
30
30
 
31
- metastatementNodes = metastatementNodes.slice(start); ///
31
+ metaAssertions = metaAssertions.slice(start); ///
32
32
 
33
- const matchesMetastatement = someCombination(metastatementNodes, (metastatementNodes) => {
34
- const premisesMatchConclusion = matchPremisesAndConclusion(this.premises, this.conclusion, metastatementNodes, metastatementNode);
33
+ const matchesMetastatement = someCombination(metaAssertions, (metaAssertions) => {
34
+ const premisesMatchConclusion = matchPremisesAndConclusion(this.premises, this.conclusion, metaAssertions, metastatementNode);
35
35
 
36
36
  if (premisesMatchConclusion) {
37
37
  return true;
@@ -56,24 +56,27 @@ class Rule {
56
56
 
57
57
  module.exports = Rule;
58
58
 
59
- function matchPremise(premise, metastatementNodes, metaSubstitutions) {
60
- const metastatementNode = prune(metastatementNodes, (metastatementNode) => {
61
- const nonTerminalNode = metastatementNode, ///
62
- nonTerminalNodeMatches = premise.matchNonTerminalNode(nonTerminalNode, metaSubstitutions);
59
+ function matchPremise(premise, metaAssertions, metaSubstitutions) {
60
+ const metaAssertion = prune(metaAssertions, (metaAssertion) => {
61
+ const nonTerminalNode = metaAssertion.getNonTerminalNode();
63
62
 
64
- if (!nonTerminalNodeMatches) { ///
65
- return true;
63
+ if (nonTerminalNode !== null) {
64
+ const nonTerminalNodeMatches = premise.matchNonTerminalNode(nonTerminalNode, metaSubstitutions);
65
+
66
+ if (!nonTerminalNodeMatches) { ///
67
+ return true;
68
+ }
66
69
  }
67
70
  }) || null;
68
71
 
69
- const premiseMatches = (metastatementNode !== null);
72
+ const premiseMatches = (metaAssertion !== null);
70
73
 
71
74
  return premiseMatches;
72
75
  }
73
76
 
74
- function matchPremises(premise, metastatementNodes, metaSubstitutions) {
77
+ function matchPremises(premise, metaAssertions, metaSubstitutions) {
75
78
  const premisesMatches = premise.every((premise) => {
76
- const premiseMatches = matchPremise(premise, metastatementNodes, metaSubstitutions);
79
+ const premiseMatches = matchPremise(premise, metaAssertions, metaSubstitutions);
77
80
 
78
81
  if (premiseMatches) {
79
82
  return true;
@@ -91,11 +94,11 @@ function matchConclusion(conclusion, metastatementNode, metaSubstitutions) {
91
94
  return conclusionMatches;
92
95
  }
93
96
 
94
- function matchPremisesAndConclusion(premises, conclusion, metastatementNodes, metastatementNode) {
97
+ function matchPremisesAndConclusion(premises, conclusion, metaAssertions, metastatementNode) {
95
98
  let premisesMatchConclusion = false;
96
99
 
97
100
  const metaSubstitutions = [],
98
- premisesMatches = matchPremises(premises, metastatementNodes, metaSubstitutions);
101
+ premisesMatches = matchPremises(premises, metaAssertions, metaSubstitutions);
99
102
 
100
103
  if (premisesMatches) {
101
104
  const conclusionMatches = matchConclusion(conclusion, metastatementNode, metaSubstitutions);
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  const verifyMetaproof = require("../verify/metaproof"),
4
+ MetaproofContext = require("../context/metaproof"),
4
5
  verifyConclusion = require("../verify/conclusion"),
5
6
  verifyPremiseOrPremises = require("../verify/premiseOrPremises");
6
7
 
@@ -13,6 +14,10 @@ const metaproofNodeQuery = nodeQuery("/conditionalInference/metaproof!"),
13
14
  function verifyConditionalInference(conditionalInferenceNode, premises, conclusions, context) {
14
15
  let conditionalInferenceVerified = false;
15
16
 
17
+ const metaproofContext = MetaproofContext.fromContext(context);
18
+
19
+ context = metaproofContext; ///
20
+
16
21
  const premiseOrPremisesNode = premiseOrPremisesNodeQuery(conditionalInferenceNode),
17
22
  premiseOrPremisesVerified = verifyPremiseOrPremises(premiseOrPremisesNode, premises, context);
18
23
 
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- const verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
3
+ const MetaAssertion = require("../metaAssertion"),
4
+ verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
4
5
 
5
6
  const { nodesQuery } = require("../utilities/query");
6
7
 
@@ -16,6 +17,14 @@ function verifyMetaAntecedent(metaAntecedentNode, context) {
16
17
  }
17
18
  });
18
19
 
20
+ if (metaAntecedentVerified) {
21
+ unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
22
+ const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
23
+
24
+ context.addMetaAssertion(metaAssertion);
25
+ });
26
+ }
27
+
19
28
  return metaAntecedentVerified;
20
29
  }
21
30
 
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- const MetaproofContext = require("../context/metaproof"),
3
+ const MetaAssertion = require("../metaAssertion"),
4
+ MetaproofContext = require("../context/metaproof"),
4
5
  verifyMetaAntecedent = require("../verify/metaAntecedent"),
5
6
  verifyQualifiedMetastatement = require("../verify/metastatement/qualified"),
6
7
  verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
@@ -19,44 +20,62 @@ function verifyMetaDerivation(metaDerivationNode, context) {
19
20
 
20
21
  context.setDerived(derived);
21
22
 
22
- const metaSubproofChildNodes = metaDerivationChildNodesQuery(metaDerivationNode),
23
- metaSubproofChildNodesVerified = metaSubproofChildNodes.every((metaSubproofChildNode) => {
24
- let metaSubproofChildNodeVerified;
23
+ const metaDerivationChildNodes = metaDerivationChildNodesQuery(metaDerivationNode),
24
+ metaDerivationChildNodesVerified = metaDerivationChildNodes.every((metaDerivationChildNode) => {
25
+ let metaDerivationChildNodeVerified;
25
26
 
26
- const ruleName = metaSubproofChildNode.getRuleName();
27
+ const ruleName = metaDerivationChildNode.getRuleName();
27
28
 
28
29
  switch (ruleName) {
29
30
  case META_SUBPROOF_RULE_NAME: {
30
- const metaSubproofNode = metaSubproofChildNode, ///
31
+ const metaSubproofNode = metaDerivationChildNode, ///
31
32
  metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, context);
32
33
 
33
- metaSubproofChildNodeVerified = metaSubproofVerified; ///
34
+ if (metaSubproofVerified) {
35
+ const metaAssertion = MetaAssertion.fromMetaSubproofNode(metaSubproofNode);
36
+
37
+ context.addMetaAssertion(metaAssertion);
38
+
39
+ metaDerivationChildNodeVerified = true;
40
+ }
34
41
 
35
42
  break;
36
43
  }
37
44
 
38
45
  case QUALIFIED_METASTATEMENT_RULE_NAME: {
39
- const qualifiedMetastatementNode = metaSubproofChildNode, ///
46
+ const qualifiedMetastatementNode = metaDerivationChildNode, ///
40
47
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, context);
41
48
 
42
- metaSubproofChildNodeVerified = qualifiedMetastatementVerified; ///
49
+ if (qualifiedMetastatementVerified) {
50
+ const metaAssertion = MetaAssertion.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
51
+
52
+ context.addMetaAssertion(metaAssertion);
53
+
54
+ metaDerivationChildNodeVerified = qualifiedMetastatementVerified; ///
55
+ }
43
56
 
44
57
  break;
45
58
  }
46
59
 
47
60
  case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
48
- const unqualifiedMetastatementNode = metaSubproofChildNode, ///
61
+ const unqualifiedMetastatementNode = metaDerivationChildNode, ///
49
62
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
50
63
 
51
- metaSubproofChildNodeVerified = unqualifiedMetastatementVerified; ///
64
+ if (unqualifiedMetastatementVerified) {
65
+ const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
66
+
67
+ context.addMetaAssertion(metaAssertion);
68
+
69
+ metaDerivationChildNodeVerified = true;
70
+ }
52
71
 
53
72
  break;
54
73
  }
55
74
  }
56
75
 
57
- return metaSubproofChildNodeVerified;
76
+ return metaDerivationChildNodeVerified;
58
77
  }),
59
- metaDerivationVerified = metaSubproofChildNodesVerified; ///
78
+ metaDerivationVerified = metaDerivationChildNodesVerified; ///
60
79
 
61
80
  return metaDerivationVerified;
62
81
  }
@@ -3,9 +3,7 @@
3
3
  const verifyMetaDerivation = require("../verify/metaDerivation"),
4
4
  verifyQualifiedMetastatement = require("../verify/metastatement/qualified");
5
5
 
6
- const { first } = require("../utilities/array"),
7
- { nodeQuery } = require("../utilities/query"),
8
- { nodeAsString } = require("../utilities/string");
6
+ const { nodeQuery } = require("../utilities/query");
9
7
 
10
8
  const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement!/metastatement!"),
11
9
  metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
@@ -24,17 +24,17 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, context) {
24
24
  const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, context);
25
25
 
26
26
  if (ruleMatchesMetastatement) {
27
- context.addMetastatementNode(metastatementNode);
28
-
29
- const metastatementString = nodeAsString(metastatementNode);
30
-
31
- log.info(`Verified the '${metastatementString}' qualified metastatement.`);
32
-
33
27
  qualifiedMetastatementVerified = true;
34
28
  }
35
29
  }
36
30
  }
37
31
 
32
+ if (qualifiedMetastatementVerified) {
33
+ const metastatementString = nodeAsString(metastatementNode);
34
+
35
+ log.info(`Verified the '${metastatementString}' qualified metastatement.`);
36
+ }
37
+
38
38
  return qualifiedMetastatementVerified;
39
39
  }
40
40
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  const { loggingUtilities } = require("necessary");
4
4
 
5
+ const MetaAssertion = require("../../metaAssertion");
6
+
5
7
  const { nodeQuery } = require("../../utilities/query"),
6
8
  { nodeAsString } = require("../../utilities/string");
7
9
 
@@ -17,21 +19,20 @@ function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context) {
17
19
  if (metastatementNode !== null) {
18
20
  const derived = context.isDerived();
19
21
 
20
- let metastatementPresent = true; ///
21
-
22
22
  if (derived) {
23
- metastatementPresent = context.isMetastatementNodePresent(metastatementNode);
24
- }
23
+ const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
24
+ metaAssertionPresent = context.isMetaAssertionPresent(metaAssertion);
25
25
 
26
- if (metastatementPresent) {
27
- context.addMetastatementNode(metastatementNode);
26
+ unqualifiedMetastatementVerified = metaAssertionPresent; ///
27
+ } else {
28
+ unqualifiedMetastatementVerified = true;
28
29
  }
30
+ }
29
31
 
32
+ if (unqualifiedMetastatementVerified) {
30
33
  const metastatementString = nodeAsString(metastatementNode);
31
34
 
32
35
  log.info(`Verified the '${metastatementString}' unqualified metastatement.`);
33
-
34
- unqualifiedMetastatementVerified = true;
35
36
  }
36
37
 
37
38
  return unqualifiedMetastatementVerified;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  const Premise = require("../premise"),
4
+ MetaAssertion = require("../metaAssertion"),
4
5
  verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
5
6
 
6
7
  const { nodeQuery, nodesQuery } = require("../utilities/query");
@@ -21,8 +22,11 @@ function verifyPremiseOrPremises(premiseOrPremisesNode, premises, context) {
21
22
  if (premiseOrPremisesVerified) {
22
23
  unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
23
24
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
25
+ metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
24
26
  premise = Premise.fromMetastatementNode(metastatementNode);
25
27
 
28
+ context.addMetaAssertion(metaAssertion);
29
+
26
30
  premises.push(premise);
27
31
  });
28
32
  }
@@ -4,7 +4,6 @@ const { loggingUtilities } = require("necessary");
4
4
 
5
5
  const Rule = require("../rule"),
6
6
  verifyLabels = require("../verify/labels"),
7
- MetaproofContext = require("../context/metaproof"),
8
7
  verifyConditionalInference = require("../verify/conditinalInference"),
9
8
  verifyUnconditionalInference = require("../verify/unconditionalInference");
10
9
 
@@ -30,10 +29,6 @@ function verifyRule(ruleNode, context) {
30
29
  labelsVerified = verifyLabels(labelNodes, labels, context);
31
30
 
32
31
  if (labelsVerified) {
33
- const metaproofContext = MetaproofContext.fromContext(context);
34
-
35
- context = metaproofContext; ///
36
-
37
32
  const premises = [],
38
33
  conclusions = [],
39
34
  conditionalInferenceNode = conditionalInferenceNodeQuery(ruleNode),
@@ -1,27 +1,43 @@
1
1
  "use strict";
2
2
 
3
3
  const Conclusion = require("../conclusion"),
4
+ verifyMetaproof = require("../verify/metaproof"),
5
+ MetaproofContext = require("../context/metaproof"),
4
6
  verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
5
7
 
6
8
  const { nodeQuery } = require("../utilities/query");
7
9
 
8
- const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
10
+ const metaproofNodeQuery = nodeQuery("/unconditionalInference/metaproof!"),
11
+ metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
9
12
  unqualifiedMetastatementNodeQuery = nodeQuery("/unconditionalInference/unqualifiedMetastatement!");
10
13
 
11
14
  function verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, context) {
12
15
  let unconditionalInferenceVerified = false;
13
16
 
14
- const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode);
17
+ const metaproofContext = MetaproofContext.fromContext(context);
15
18
 
16
- const unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
19
+ context = metaproofContext; ///
20
+
21
+ const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode),
22
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
17
23
 
18
24
  if (unqualifiedMetastatementVerified) {
19
- const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
20
- conclusion = Conclusion.fromMetastatementNode(metastatementNode);
25
+ let metaproofVerified = true;
26
+
27
+ const metaproofNode = metaproofNodeQuery(unconditionalInferenceNode);
28
+
29
+ if (metaproofNode !== null) {
30
+ metaproofVerified = verifyMetaproof(metaproofNode, context);
31
+ }
32
+
33
+ if (metaproofVerified) {
34
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
35
+ conclusion = Conclusion.fromMetastatementNode(metastatementNode);
21
36
 
22
- conclusions.push(conclusion);
37
+ conclusions.push(conclusion);
23
38
 
24
- unconditionalInferenceVerified = true;
39
+ unconditionalInferenceVerified = true;
40
+ }
25
41
  }
26
42
 
27
43
  return unconditionalInferenceVerified;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.268",
4
+ "version": "0.0.270",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -12,10 +12,10 @@
12
12
  "dependencies": {
13
13
  "argumentative": "^2.0.15",
14
14
  "necessary": "^11.0.40",
15
- "occam-custom-grammars": "^5.0.349",
15
+ "occam-custom-grammars": "^5.0.351",
16
16
  "occam-dom": "^3.0.171",
17
17
  "occam-grammar-utilities": "^7.0.66",
18
- "occam-grammars": "^1.0.316",
18
+ "occam-grammars": "^1.0.318",
19
19
  "occam-open-cli": "^5.0.37",
20
20
  "occam-parsers": "^16.0.122"
21
21
  },