occam-verify-cli 0.0.270 → 0.0.271

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.
@@ -1,30 +1,19 @@
1
1
  "use strict";
2
2
 
3
- const Antecedent = require("../antecedent"),
3
+ const Assertion = require("../assertion"),
4
4
  verifyUnqualifiedStatement = require("../verify/statement/unqualified");
5
5
 
6
- const { nodeQuery, nodesQuery } = require("../utilities/query");
6
+ const { nodeQuery } = require("../utilities/query");
7
7
 
8
- const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement"),
9
- unqualifiedStatementNodesQuery = nodesQuery("/antecedent/unqualifiedStatement");
8
+ const unqualifiedStatementNodeQuery = nodeQuery("/antecedent/unqualifiedStatement!");
10
9
 
11
10
  function verifyAntecedent(antecedentNode, antecedents, context) {
12
- const unqualifiedStatementNodes = unqualifiedStatementNodesQuery(antecedentNode),
13
- antecedentVerified = unqualifiedStatementNodes.every((unqualifiedStatementNode) => {
14
- const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, context);
15
-
16
- if (unqualifiedStatementVerified) {
17
- return true;
18
- }
19
- });
11
+ const unqualifiedStatementNode = unqualifiedStatementNodeQuery(antecedentNode),
12
+ unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, context),
13
+ antecedentVerified = unqualifiedStatementVerified;
20
14
 
21
15
  if (antecedentVerified) {
22
- const statementNodes = unqualifiedStatementNodes.map((unqualifiedStatementNode) => {
23
- const statementNode = statementNodeQuery(unqualifiedStatementNode);
24
-
25
- return statementNode;
26
- }),
27
- antecedent = Antecedent.fromStatementNodes(statementNodes);
16
+ const antecedent = Assertion.fromUnqualifiedStatementNode(unqualifiedStatementNode);
28
17
 
29
18
  antecedents.push(antecedent);
30
19
  }
@@ -2,11 +2,11 @@
2
2
 
3
3
  const { loggingUtilities } = require("necessary");
4
4
 
5
- const Variable = require("../variable"),
6
- verifyTermAsVariable = require("../verify/termAsVariable");
5
+ const Variable = require("../../variable"),
6
+ verifyTermAsVariable = require("../../verify/termAsVariable");
7
7
 
8
- const { first } = require("../utilities/array"),
9
- { nodeQuery, typeNameFromTypeNode } = require("../utilities/query");
8
+ const { first } = require("../../utilities/array"),
9
+ { nodeQuery, typeNameFromTypeNode } = require("../../utilities/query");
10
10
 
11
11
  const { log } = loggingUtilities;
12
12
 
@@ -6,9 +6,10 @@ const verifyMetaproof = require("../verify/metaproof"),
6
6
  verifyPremiseOrPremises = require("../verify/premiseOrPremises");
7
7
 
8
8
  const { nodeQuery } = require("../utilities/query");
9
+ const Conclusion = require("../conclusion");
9
10
 
10
- const metaproofNodeQuery = nodeQuery("/conditionalInference/metaproof!"),
11
- conclusionNodeQuery = nodeQuery("/conditionalInference/conclusion!"),
11
+ const conclusionNodeQuery = nodeQuery("/conditionalInference/conclusion!"),
12
+ metastatementNodeQuery = nodeQuery("/conditionalInference/conclusion!/unqualifiedMetastatement!/metastatement!"),
12
13
  premiseOrPremisesNodeQuery = nodeQuery("/conditionalInference/premise|premises!");
13
14
 
14
15
  function verifyConditionalInference(conditionalInferenceNode, premises, conclusions, context) {
@@ -18,23 +19,20 @@ function verifyConditionalInference(conditionalInferenceNode, premises, conclusi
18
19
 
19
20
  context = metaproofContext; ///
20
21
 
21
- const premiseOrPremisesNode = premiseOrPremisesNodeQuery(conditionalInferenceNode),
22
+ const conclusionNode = conclusionNodeQuery(conditionalInferenceNode),
23
+ metastatementNode = metastatementNodeQuery(conditionalInferenceNode),
24
+ premiseOrPremisesNode = premiseOrPremisesNodeQuery(conditionalInferenceNode),
22
25
  premiseOrPremisesVerified = verifyPremiseOrPremises(premiseOrPremisesNode, premises, context);
23
26
 
24
27
  if (premiseOrPremisesVerified) {
25
- const conclusionNode = conclusionNodeQuery(conditionalInferenceNode),
26
- conclusionVerified = verifyConclusion(conclusionNode, conclusions, context);
28
+ const conclusionVerified = verifyConclusion(conclusionNode, conclusions, context);
27
29
 
28
30
  if (conclusionVerified) {
29
- let metaproofVerified = true;
31
+ const conclusion = Conclusion.fromMetastatementNode(metastatementNode);
30
32
 
31
- const metaproofNode = metaproofNodeQuery(conditionalInferenceNode);
33
+ conclusions.push(conclusion);
32
34
 
33
- if (metaproofNode !== null) {
34
- metaproofVerified = verifyMetaproof(metaproofNode, context);
35
- }
36
-
37
- conditionalInferenceVerified = metaproofVerified; ///
35
+ conditionalInferenceVerified = true;
38
36
  }
39
37
  }
40
38
 
@@ -3,26 +3,19 @@
3
3
  const MetaAssertion = require("../metaAssertion"),
4
4
  verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
5
5
 
6
- const { nodesQuery } = require("../utilities/query");
6
+ const { nodeQuery } = require("../utilities/query");
7
7
 
8
- const unqualifiedMetastatementNodesQuery = nodesQuery("/metaAntecedent/unqualifiedMetastatement");
8
+ const unqualifiedMetastatementNodeQuery = nodeQuery("/metaAntecedent/unqualifiedMetastatement!");
9
9
 
10
10
  function verifyMetaAntecedent(metaAntecedentNode, context) {
11
- const unqualifiedMetastatementNodes = unqualifiedMetastatementNodesQuery(metaAntecedentNode),
12
- metaAntecedentVerified = unqualifiedMetastatementNodes.every((unqualifiedMetastatementNode) => {
13
- const unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
14
-
15
- if (unqualifiedMetastatementVerified) {
16
- return true;
17
- }
18
- });
11
+ const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaAntecedentNode),
12
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context),
13
+ metaAntecedentVerified = unqualifiedMetastatementVerified; ///
19
14
 
20
15
  if (metaAntecedentVerified) {
21
- unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
22
- const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
16
+ const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
23
17
 
24
- context.addMetaAssertion(metaAssertion);
25
- });
18
+ context.addMetaAssertion(metaAssertion);
26
19
  }
27
20
 
28
21
  return metaAntecedentVerified;
@@ -5,16 +5,16 @@ const verifyMetaDerivation = require("../verify/metaDerivation"),
5
5
 
6
6
  const { nodeQuery } = require("../utilities/query");
7
7
 
8
- const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement!/metastatement!"),
9
- metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
10
- qualifiedStatementNodeQuery = nodeQuery("/metaproof/qualifiedMetastatement!");
8
+ const metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
9
+ qualifiedStatementNodeQuery = nodeQuery("/metaproof/qualifiedMetastatement!"),
10
+ metaProofMetastatementNodeQuery = nodeQuery("/metaproof/qualifiedMetastatement/metastatement!");
11
11
 
12
- function verifyMetaproof(metaproofNode, context) {
12
+ function verifyMetaproof(metaproofNode, metastatementNode, context) {
13
13
  let metaproofVerified = false;
14
14
 
15
15
  const metaDerivationNode = metaDerivationNodeQuery(metaproofNode);
16
16
 
17
- let metaDerivationVerified = false;
17
+ let metaDerivationVerified = true;
18
18
 
19
19
  if (metaDerivationNode !== null) {
20
20
  metaDerivationVerified = verifyMetaDerivation(metaDerivationNode, context);
@@ -25,18 +25,10 @@ function verifyMetaproof(metaproofNode, context) {
25
25
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, context);
26
26
 
27
27
  if (qualifiedMetastatementVerified) {
28
- debugger
29
-
30
- // const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
31
- // firstRule = first(rules),
32
- // rule = firstRule, ///
33
- // metastatementString = nodeAsString(metastatementNode),
34
- // conclusionMetastatementNode = rule.getConclusionMetastatementNode(),
35
- // conclusionMetastatementString = nodeAsString(conclusionMetastatementNode);
36
- //
37
- // if (metastatementString === conclusionMetastatementString) {
38
- // metaproofVerified = true;
39
- // }
28
+ const metaProofMetastatementNode = metaProofMetastatementNodeQuery(metaproofNode),
29
+ metaProofMetastatementNodeMatches = matchMetaProofMetastatementNode(metaProofMetastatementNode, metastatementNode);
30
+
31
+ metaproofVerified = metaProofMetastatementNodeMatches; ///
40
32
  }
41
33
  }
42
34
 
@@ -44,3 +36,83 @@ function verifyMetaproof(metaproofNode, context) {
44
36
  }
45
37
 
46
38
  module.exports = verifyMetaproof;
39
+
40
+ function matchMetaProofMetastatementNode(metaProofMetastatementNode, metastatementNode) {
41
+ const metaProofNonTerminalNode = metaProofMetastatementNode, ///
42
+ nonTerminalNode = metastatementNode, ///
43
+ metaProofNonTerminalNodeMatches = matchMetaProofNonTerminalNode(metaProofNonTerminalNode, nonTerminalNode),
44
+ metaProofMetastatementNodeMatches = metaProofNonTerminalNodeMatches; ///
45
+
46
+ return metaProofMetastatementNodeMatches;
47
+ }
48
+
49
+ function matchMetaProofNode(metaProofNode, node) {
50
+ let metaProofNodeMatches = false;
51
+
52
+ const nodeTerminalNode = node.isTerminalNode(),
53
+ ruleNodeTerminalNode = metaProofNode.isTerminalNode();
54
+
55
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
56
+ if (nodeTerminalNode) {
57
+ const terminalNode = node, ///
58
+ metaProofTerminalNode = metaProofNode, ///
59
+ metaProofTerminalNodeMatches = matchMetaProofTerminalNode(metaProofTerminalNode, terminalNode);
60
+
61
+ metaProofNodeMatches = metaProofTerminalNodeMatches; ///
62
+ } else {
63
+ const nonTerminalNode = node, ///
64
+ metaProofNonTerminalNode = metaProofNode, ///
65
+ metaProofNonTerminalNodeMatches = matchMetaProofNonTerminalNode(metaProofNonTerminalNode, nonTerminalNode);
66
+
67
+ metaProofNodeMatches = metaProofNonTerminalNodeMatches; ///
68
+ }
69
+ }
70
+
71
+ return metaProofNodeMatches;
72
+ }
73
+
74
+ function matchMetaProofNodes(metaProofNodes, nodes) {
75
+ let metaProofNodesMatches = false;
76
+
77
+ const nodesLength = nodes.length,
78
+ metaProofNodesLength = metaProofNodes.length;
79
+
80
+ if (nodesLength === metaProofNodesLength) {
81
+ metaProofNodesMatches = nodes.every((node, index) => {
82
+ const metaProofNode = metaProofNodes[index],
83
+ metaProofNodeMatches = matchMetaProofNode(metaProofNode, node);
84
+
85
+ if (metaProofNodeMatches) {
86
+ return true;
87
+ }
88
+ })
89
+ }
90
+
91
+ return metaProofNodesMatches;
92
+ }
93
+
94
+ function matchMetaProofTerminalNode(metaProofTerminalNode, terminalNode) {
95
+ const matches = metaProofTerminalNode.match(terminalNode),
96
+ metaProofTerminalNodeMatches = matches; ///
97
+
98
+ return metaProofTerminalNodeMatches;
99
+ }
100
+
101
+ function matchMetaProofNonTerminalNode(metaProofNonTerminalNode, nonTerminalNode) {
102
+ let metaProofNonTerminalNodeMatches = false;
103
+
104
+ const ruleName = nonTerminalNode.getRuleName(),
105
+ metaProofRuleName = metaProofNonTerminalNode.getRuleName(); ///
106
+
107
+ if (ruleName === metaProofRuleName) {
108
+ const childNodes = nonTerminalNode.getChildNodes(),
109
+ metaProofChildNodes = metaProofNonTerminalNode.getChildNodes(),
110
+ nodes = childNodes, ///
111
+ metaProofNodes = metaProofChildNodes, ///
112
+ metaProofNodesMatches = matchMetaProofNodes(metaProofNodes, nodes);
113
+
114
+ metaProofNonTerminalNodeMatches = metaProofNodesMatches; ///
115
+ }
116
+
117
+ return metaProofNonTerminalNodeMatches;
118
+ }
@@ -23,16 +23,14 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, context) {
23
23
  if (rule !== null) {
24
24
  const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, context);
25
25
 
26
- if (ruleMatchesMetastatement) {
27
- qualifiedMetastatementVerified = true;
28
- }
26
+ qualifiedMetastatementVerified = ruleMatchesMetastatement; ///
29
27
  }
30
28
  }
31
29
 
32
30
  if (qualifiedMetastatementVerified) {
33
31
  const metastatementString = nodeAsString(metastatementNode);
34
32
 
35
- log.info(`Verified the '${metastatementString}' qualified metastatement.`);
33
+ log.debug(`Verified the '${metastatementString}' qualified metastatement.`);
36
34
  }
37
35
 
38
36
  return qualifiedMetastatementVerified;
@@ -20,10 +20,10 @@ function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context) {
20
20
  const derived = context.isDerived();
21
21
 
22
22
  if (derived) {
23
- const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
24
- metaAssertionPresent = context.isMetaAssertionPresent(metaAssertion);
23
+ const metaAssertion = MetaAssertion.fromMetastatementNode(metastatementNode),
24
+ metaAssertionMatches = context.matchMetaAssertion(metaAssertion);
25
25
 
26
- unqualifiedMetastatementVerified = metaAssertionPresent; ///
26
+ unqualifiedMetastatementVerified = metaAssertionMatches; ///
27
27
  } else {
28
28
  unqualifiedMetastatementVerified = true;
29
29
  }
@@ -32,7 +32,7 @@ function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context) {
32
32
  if (unqualifiedMetastatementVerified) {
33
33
  const metastatementString = nodeAsString(metastatementNode);
34
34
 
35
- log.info(`Verified the '${metastatementString}' unqualified metastatement.`);
35
+ log.debug(`Verified the '${metastatementString}' unqualified metastatement.`);
36
36
  }
37
37
 
38
38
  return unqualifiedMetastatementVerified;
@@ -4,6 +4,7 @@ const { loggingUtilities } = require("necessary");
4
4
 
5
5
  const Rule = require("../rule"),
6
6
  verifyLabels = require("../verify/labels"),
7
+ verifyMetaproof = require("../verify/metaproof"),
7
8
  verifyConditionalInference = require("../verify/conditinalInference"),
8
9
  verifyUnconditionalInference = require("../verify/unconditionalInference");
9
10
 
@@ -14,6 +15,7 @@ const { first } = require("../utilities/array"),
14
15
  const { log } = loggingUtilities;
15
16
 
16
17
  const labelNodesQuery = nodesQuery("/rule/label"),
18
+ metaproofNodeQuery = nodeQuery("/rule/metaproof!"),
17
19
  conditionalInferenceNodeQuery = nodeQuery("/rule/conditionalInference!"),
18
20
  unconditionalInferenceNodeQuery = nodeQuery("/rule/unconditionalInference!");
19
21
 
@@ -34,25 +36,40 @@ function verifyRule(ruleNode, context) {
34
36
  conditionalInferenceNode = conditionalInferenceNodeQuery(ruleNode),
35
37
  unconditionalInferenceNode = unconditionalInferenceNodeQuery(ruleNode);
36
38
 
37
- if (conditionalInferenceNode !== null) {
38
- const conditionalInferenceVerified = verifyConditionalInference(conditionalInferenceNode, premises, conclusions, context);
39
+ let conditionalInferenceVerified = false,
40
+ unconditionalInferenceVerified = false;
39
41
 
40
- ruleVerified = conditionalInferenceVerified; ///
42
+ if (conditionalInferenceNode !== null) {
43
+ conditionalInferenceVerified = verifyConditionalInference(conditionalInferenceNode, premises, conclusions, context);
41
44
  }
42
45
 
43
46
  if (unconditionalInferenceNode !== null) {
44
- const unconditionalInferenceVerified = verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, context);
45
-
46
- ruleVerified = unconditionalInferenceVerified; ///
47
+ unconditionalInferenceVerified = verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, context);
47
48
  }
48
49
 
49
- if (ruleVerified) {
50
- const firstConclusion = first(conclusions),
51
- conclusion = firstConclusion, ///
52
- rule = Rule.fromPremisesConclusionAndLabels(premises, conclusion, labels);
50
+ if (conditionalInferenceVerified || unconditionalInferenceVerified) {
51
+ const metaproofNode = metaproofNodeQuery(ruleNode),
52
+ firstConclusion = first(conclusions),
53
+ conclusion = firstConclusion; ///
54
+
55
+ let metaproofVerified = true;
56
+
57
+ if (metaproofNode !== null) {
58
+ const metastatementNode = conclusion.getMetastatementNode();
53
59
 
54
- context.addRule(rule);
60
+ metaproofVerified = verifyMetaproof(metaproofNode, metastatementNode, context);
61
+ }
55
62
 
63
+ if (metaproofVerified) {
64
+ const rule = Rule.fromPremisesConclusionAndLabels(premises, conclusion, labels);
65
+
66
+ context.addRule(rule);
67
+
68
+ ruleVerified = true;
69
+ }
70
+ }
71
+
72
+ if (ruleVerified) {
56
73
  log.info(`Verified the '${labelsString}' rule.`);
57
74
  }
58
75
  }
@@ -3,7 +3,7 @@
3
3
  const { loggingUtilities } = require("necessary");
4
4
 
5
5
  const verifyEquality = require("../verify/equality"),
6
- verifyTypeAssertion = require("../verify/typeAssertion");
6
+ verifyTypeAssertion = require("../verify/assertion/type");
7
7
 
8
8
  const { nodeQuery } = require("../utilities/query"),
9
9
  { nodeAsString } = require("../utilities/string");
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  const Conclusion = require("../conclusion"),
4
- verifyMetaproof = require("../verify/metaproof"),
5
4
  MetaproofContext = require("../context/metaproof"),
6
5
  verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
7
6
 
8
7
  const { nodeQuery } = require("../utilities/query");
9
8
 
10
- const metaproofNodeQuery = nodeQuery("/unconditionalInference/metaproof!"),
11
- metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
9
+ const metastatementNodeQuery = nodeQuery("/unconditionalInference/unqualifiedMetastatement!/metastatement!"),
12
10
  unqualifiedMetastatementNodeQuery = nodeQuery("/unconditionalInference/unqualifiedMetastatement!");
13
11
 
14
12
  function verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, context) {
@@ -18,26 +16,16 @@ function verifyUnconditionalInference(unconditionalInferenceNode, premises, conc
18
16
 
19
17
  context = metaproofContext; ///
20
18
 
21
- const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode),
19
+ const metastatementNode = metastatementNodeQuery(unconditionalInferenceNode),
20
+ unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode),
22
21
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
23
22
 
24
23
  if (unqualifiedMetastatementVerified) {
25
- let metaproofVerified = true;
24
+ const conclusion = Conclusion.fromMetastatementNode(metastatementNode);
26
25
 
27
- const metaproofNode = metaproofNodeQuery(unconditionalInferenceNode);
26
+ conclusions.push(conclusion);
28
27
 
29
- if (metaproofNode !== null) {
30
- metaproofVerified = verifyMetaproof(metaproofNode, context);
31
- }
32
-
33
- if (metaproofVerified) {
34
- const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
35
- conclusion = Conclusion.fromMetastatementNode(metastatementNode);
36
-
37
- conclusions.push(conclusion);
38
-
39
- unconditionalInferenceVerified = true;
40
- }
28
+ unconditionalInferenceVerified = true;
41
29
  }
42
30
 
43
31
  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.270",
4
+ "version": "0.0.271",
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.351",
15
+ "occam-custom-grammars": "^5.0.352",
16
16
  "occam-dom": "^3.0.171",
17
17
  "occam-grammar-utilities": "^7.0.66",
18
- "occam-grammars": "^1.0.318",
18
+ "occam-grammars": "^1.0.319",
19
19
  "occam-open-cli": "^5.0.37",
20
20
  "occam-parsers": "^16.0.122"
21
21
  },
package/bin/antecedent.js DELETED
@@ -1,19 +0,0 @@
1
- "use strict";
2
-
3
- class Antecedent {
4
- constructor(statementNodes) {
5
- this.statementNodes = statementNodes;
6
- }
7
-
8
- getStatementNodes() {
9
- return this.statementNodes;
10
- }
11
-
12
- static fromStatementNodes(statementNodes) {
13
- const antecedent = new Antecedent(statementNodes);
14
-
15
- return antecedent;
16
- }
17
- }
18
-
19
- module.exports = Antecedent;