occam-verify-cli 0.0.272 → 0.0.274

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 (141) hide show
  1. package/.swcrc +5 -0
  2. package/bin/abbreviations.js +4 -2
  3. package/bin/context/{package → release}/fileSystem.js +38 -25
  4. package/bin/fileNames.js +7 -7
  5. package/bin/loadReleaseContexts.js +52 -0
  6. package/bin/main.js +8 -9
  7. package/bin/options.js +2 -2
  8. package/bin/utilities/fileSystem.js +13 -15
  9. package/lib/assertion.js +140 -0
  10. package/lib/axiom.js +90 -0
  11. package/lib/browser.js +27 -0
  12. package/lib/combinator.js +58 -0
  13. package/lib/conclusion.js +140 -0
  14. package/lib/constants.js +42 -0
  15. package/lib/constructor.js +76 -0
  16. package/lib/context/file.js +342 -0
  17. package/lib/context/metaproof.js +232 -0
  18. package/lib/context/proof.js +211 -0
  19. package/lib/context/release.js +303 -0
  20. package/lib/main.js +27 -0
  21. package/lib/metaAssertion.js +200 -0
  22. package/lib/metaSubstitution.js +123 -0
  23. package/lib/permutationsMatrix.js +466136 -0
  24. package/lib/premise.js +168 -0
  25. package/lib/rule.js +139 -0
  26. package/lib/ruleNames.js +46 -0
  27. package/lib/type.js +153 -0
  28. package/lib/utilities/array.js +99 -0
  29. package/lib/utilities/metastatement.js +45 -0
  30. package/lib/utilities/permutations.js +114 -0
  31. package/lib/utilities/query.js +81 -0
  32. package/lib/utilities/string.js +54 -0
  33. package/lib/variable.js +94 -0
  34. package/lib/verify/IndicativeConditional.js +29 -0
  35. package/lib/verify/assertion/type.js +52 -0
  36. package/lib/verify/axiom.js +52 -0
  37. package/lib/verify/conclusion.js +34 -0
  38. package/lib/verify/conditinalInference.js +30 -0
  39. package/lib/verify/declaration/combinator.js +24 -0
  40. package/lib/verify/declaration/constructor.js +24 -0
  41. package/lib/verify/declaration/topLevel.js +51 -0
  42. package/lib/verify/declaration/type.js +24 -0
  43. package/lib/verify/declaration/variable.js +24 -0
  44. package/lib/verify/equality.js +45 -0
  45. package/lib/verify/file.js +39 -0
  46. package/lib/verify/files.js +48 -0
  47. package/lib/verify/label.js +24 -0
  48. package/lib/verify/labels.js +27 -0
  49. package/lib/verify/metaDerivation.js +94 -0
  50. package/lib/verify/metaproof.js +81 -0
  51. package/lib/verify/metastatement/qualified.js +31 -0
  52. package/lib/verify/metastatement/unqualified.js +39 -0
  53. package/lib/verify/premiseOrPremises.js +39 -0
  54. package/lib/verify/release.js +61 -0
  55. package/lib/verify/rule.js +61 -0
  56. package/lib/verify/statement/qualified.js +24 -0
  57. package/lib/verify/statement/unqualified.js +32 -0
  58. package/lib/verify/statement.js +43 -0
  59. package/lib/verify/statementAsCombinator.js +102 -0
  60. package/lib/verify/supposition.js +29 -0
  61. package/lib/verify/term.js +121 -0
  62. package/lib/verify/termAsConstructor.js +126 -0
  63. package/lib/verify/termAsVariable.js +31 -0
  64. package/lib/verify/type.js +45 -0
  65. package/lib/verify/unconditionalInference.js +31 -0
  66. package/lib/verify/variable.js +48 -0
  67. package/package.json +21 -5
  68. package/{bin → src}/assertion.js +2 -4
  69. package/src/axiom.js +49 -0
  70. package/src/browser.js +4 -0
  71. package/{bin → src}/combinator.js +2 -4
  72. package/{bin → src}/conclusion.js +4 -6
  73. package/src/constants.js +9 -0
  74. package/{bin → src}/constructor.js +2 -4
  75. package/{bin → src}/context/file.js +34 -24
  76. package/{bin → src}/context/metaproof.js +13 -3
  77. package/{bin → src}/context/proof.js +13 -3
  78. package/src/context/release.js +219 -0
  79. package/src/main.js +4 -0
  80. package/{bin → src}/metaAssertion.js +4 -6
  81. package/{bin → src}/metaSubstitution.js +11 -4
  82. package/{bin → src}/permutationsMatrix.js +1 -1
  83. package/{bin → src}/premise.js +6 -8
  84. package/{bin → src}/rule.js +24 -15
  85. package/src/ruleNames.js +10 -0
  86. package/{bin → src}/type.js +1 -3
  87. package/{bin → src}/utilities/array.js +19 -24
  88. package/{bin → src}/utilities/metastatement.js +18 -12
  89. package/{bin → src}/utilities/permutations.js +4 -4
  90. package/{bin → src}/utilities/query.js +8 -18
  91. package/{bin → src}/utilities/string.js +4 -10
  92. package/{bin → src}/variable.js +1 -3
  93. package/src/verify/IndicativeConditional.js +20 -0
  94. package/{bin → src}/verify/assertion/type.js +8 -14
  95. package/src/verify/axiom.js +68 -0
  96. package/{bin → src}/verify/conclusion.js +4 -6
  97. package/src/verify/conditinalInference.js +25 -0
  98. package/{bin → src}/verify/declaration/combinator.js +3 -5
  99. package/{bin → src}/verify/declaration/constructor.js +3 -5
  100. package/{bin → src}/verify/declaration/topLevel.js +8 -10
  101. package/{bin → src}/verify/declaration/type.js +3 -5
  102. package/{bin → src}/verify/declaration/variable.js +3 -5
  103. package/{bin → src}/verify/equality.js +4 -6
  104. package/{bin → src}/verify/file.js +9 -15
  105. package/{bin → src}/verify/files.js +5 -7
  106. package/{bin → src}/verify/label.js +3 -9
  107. package/{bin → src}/verify/labels.js +2 -4
  108. package/{bin → src}/verify/metaDerivation.js +25 -19
  109. package/{bin → src}/verify/metaproof.js +6 -7
  110. package/{bin → src}/verify/metastatement/qualified.js +4 -10
  111. package/{bin → src}/verify/metastatement/unqualified.js +5 -11
  112. package/{bin → src}/verify/premiseOrPremises.js +9 -10
  113. package/src/verify/release.js +70 -0
  114. package/{bin → src}/verify/rule.js +17 -20
  115. package/{bin → src}/verify/statement/qualified.js +3 -5
  116. package/{bin → src}/verify/statement/unqualified.js +3 -5
  117. package/{bin → src}/verify/statement.js +7 -13
  118. package/{bin → src}/verify/statementAsCombinator.js +8 -14
  119. package/{bin → src}/verify/supposition.js +4 -6
  120. package/{bin → src}/verify/term.js +7 -13
  121. package/{bin → src}/verify/termAsConstructor.js +13 -19
  122. package/{bin → src}/verify/termAsVariable.js +3 -9
  123. package/{bin → src}/verify/type.js +7 -13
  124. package/{bin → src}/verify/unconditionalInference.js +4 -11
  125. package/{bin → src}/verify/variable.js +6 -12
  126. package/bin/axiom.js +0 -52
  127. package/bin/consequent.js +0 -19
  128. package/bin/constants.js +0 -19
  129. package/bin/context/package.js +0 -221
  130. package/bin/loadPackageContexts.js +0 -53
  131. package/bin/permutations.js +0 -3
  132. package/bin/ruleNames.js +0 -23
  133. package/bin/verify/axiom/IndicativeConditional.js +0 -54
  134. package/bin/verify/axiom/unqualifiedStatement.js +0 -40
  135. package/bin/verify/axiom.js +0 -37
  136. package/bin/verify/conditinalInference.js +0 -42
  137. package/bin/verify/consequent.js +0 -32
  138. package/bin/verify/metaConsequent.js +0 -23
  139. package/bin/verify/metaSupposition.js +0 -24
  140. package/bin/verify/package.js +0 -81
  141. package/index.js +0 -9
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
 
3
- const MetaSubstitution = require("./metaSubstitution");
3
+ import MetaSubstitution from "./metaSubstitution";
4
4
 
5
- const { first, second } = require("./utilities/array"),
6
- { nodeQuery, nodesQuery } = require("./utilities/query"),
7
- { metavariableNameFromMetavariableNode } = require("./utilities/query"),
8
- { METAVARIABLE_RULE_NAME, METASTATEMENT_RULE_NAME } = require("./ruleNames");
5
+ import { first, second } from "./utilities/array";
6
+ import { nodeQuery, nodesQuery } from "./utilities/query";
7
+ import { metavariableNameFromMetavariableNode } from "./utilities/query";
8
+ import { METAVARIABLE_RULE_NAME, METASTATEMENT_RULE_NAME } from "./ruleNames";
9
9
 
10
10
  const metastatementNodesQuery = nodesQuery("/metaSubproofAssertion/metastatement"),
11
11
  metaSubproofAssertionNodeQuery = nodeQuery("/metastatement/metaSubproofAssertion!"),
12
12
  qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = nodesQuery("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
13
13
 
14
- class Premise {
14
+ export default class Premise {
15
15
  constructor(metastatementNode) {
16
16
  this.metastatementNode = metastatementNode;
17
17
  }
@@ -66,8 +66,6 @@ class Premise {
66
66
  }
67
67
  }
68
68
 
69
- module.exports = Premise;
70
-
71
69
  function matchPremiseNode(premiseNode, node, metaSubstitutions) {
72
70
  let premiseNodeMatches = false;
73
71
 
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- const { prune } = require("./utilities/array"),
4
- { someSubArray } = require("./utilities/array"),
5
- { labelsAsString } = require("./utilities/string");
3
+ import { prune } from "./utilities/array";
4
+ import { someSubArray } from "./utilities/array";
5
+ import { labelsAsString } from "./utilities/string";
6
6
 
7
- class Rule {
7
+ export default class Rule {
8
8
  constructor(labels, premises, conclusion) {
9
9
  this.labels = labels;
10
10
  this.premises = premises;
@@ -24,17 +24,28 @@ class Rule {
24
24
  }
25
25
 
26
26
  matchMetastatement(metastatementNode, context) {
27
- const metaAssertions = context.getMetaAssertions(),
28
- premisesLength = this.premises.length,
29
- matchesMetastatement = someSubArray(metaAssertions, premisesLength, (metaAssertions) => {
30
- const premisesMatchConclusion = matchPremisesAndConclusion(this.premises, this.conclusion, metaAssertions, metastatementNode);
27
+ let metastatementNatches;
31
28
 
32
- if (premisesMatchConclusion) {
33
- return true;
34
- }
35
- });
29
+ const premisesLength = this.premises.length;
36
30
 
37
- return matchesMetastatement;
31
+ if (premisesLength === 0) {
32
+ const metaSubstitutions = [],
33
+ conclusionMatches = matchConclusion(this.conclusion, metastatementNode, metaSubstitutions);
34
+
35
+ metastatementNatches = conclusionMatches; ///
36
+ } else {
37
+ const metaAssertions = context.getMetaAssertions();
38
+
39
+ metastatementNatches = someSubArray(metaAssertions, premisesLength, (metaAssertions) => {
40
+ const premisesMatchConclusion = matchPremisesAndConclusion(this.premises, this.conclusion, metaAssertions, metastatementNode);
41
+
42
+ if (premisesMatchConclusion) {
43
+ return true;
44
+ }
45
+ });
46
+ }
47
+
48
+ return metastatementNatches;
38
49
  }
39
50
 
40
51
  asString() {
@@ -50,8 +61,6 @@ class Rule {
50
61
  }
51
62
  }
52
63
 
53
- module.exports = Rule;
54
-
55
64
  function matchPremise(premise, metaAssertions, metaSubstitutions) {
56
65
  const metaAssertion = prune(metaAssertions, (metaAssertion) => {
57
66
  const metaSubproofNode = metaAssertion.getMetaSubproofNode(),
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ export const TERM_RULE_NAME = "term";
4
+ export const TYPE_RULE_NAME = "type";
5
+ export const ARGUMENT_RULE_NAME = "argument";
6
+ export const METAVARIABLE_RULE_NAME = "metavariable";
7
+ export const METASTATEMENT_RULE_NAME = "metastatement";
8
+ export const META_SUBPROOF_RULE_NAME = "metaSubproof";
9
+ export const QUALIFIED_METASTATEMENT_RULE_NAME = "qualifiedMetastatement";
10
+ export const UNQUALIFIED_METASTATEMENT_RULE_NAME = "unqualifiedMetastatement";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- class Type {
3
+ export default class Type {
4
4
  constructor(name, superType) {
5
5
  this.name = name;
6
6
  this.superType = superType;
@@ -116,5 +116,3 @@ class Type {
116
116
  return type;
117
117
  }
118
118
  }
119
-
120
- module.exports = Type;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
 
3
- const { arrayUtilities } = require("necessary");
3
+ import { arrayUtilities } from "necessary";
4
4
 
5
- const permutationsMatrix = require("../permutationsMatrix");
5
+ import permutationsMatrix from "../permutationsMatrix";
6
6
 
7
- const { MAXIMUM_INDEXES_LENGTH, MAXIMUM_PERMUTATION_LENGTH } = require("../constants");
7
+ import { MAXIMUM_INDEXES_LENGTH, MAXIMUM_PERMUTATION_LENGTH } from "../constants";
8
8
 
9
- const { push, last, prune, first, third, second, filter } = arrayUtilities;
9
+ export const { push, last, prune, first, third, second, filter } = arrayUtilities;
10
10
 
11
- function someSubArray(array, subArrayLength, callback) {
11
+ export function someSubArray(array, subArrayLength, callback) {
12
12
  let found = false;
13
13
 
14
14
  const arrayLength = array.length,
@@ -16,10 +16,18 @@ function someSubArray(array, subArrayLength, callback) {
16
16
  permutationLength = subArrayLength; ///
17
17
 
18
18
  if (permutationLength <= MAXIMUM_PERMUTATION_LENGTH) {
19
- const offset = (indexesLength <= MAXIMUM_INDEXES_LENGTH) ?
20
- 0 :
21
- indexesLength - MAXIMUM_INDEXES_LENGTH,
22
- permutations = permutationsMatrix[indexesLength][permutationLength];
19
+ let offset,
20
+ permutations;
21
+
22
+ if (indexesLength > MAXIMUM_INDEXES_LENGTH) {
23
+ offset = indexesLength - MAXIMUM_INDEXES_LENGTH;
24
+
25
+ permutations = permutationsMatrix[MAXIMUM_INDEXES_LENGTH][permutationLength];
26
+ } else {
27
+ offset = 0;
28
+
29
+ permutations = permutationsMatrix[indexesLength][permutationLength];
30
+ }
23
31
 
24
32
  if (permutations !== null) {
25
33
  found = permutations.some((permutation) => {
@@ -46,7 +54,7 @@ function someSubArray(array, subArrayLength, callback) {
46
54
  return found;
47
55
  }
48
56
 
49
- function leftDifference(arrayA, arrayB) {
57
+ export function leftDifference(arrayA, arrayB) {
50
58
  filter(arrayA, (elementA) => {
51
59
  const arrayBIncludesElementA = arrayB.includes(elementA);
52
60
 
@@ -56,7 +64,7 @@ function leftDifference(arrayA, arrayB) {
56
64
  });
57
65
  }
58
66
 
59
- function rightDifference(arrayA, arrayB) {
67
+ export function rightDifference(arrayA, arrayB) {
60
68
  filter(arrayB, (elementB) => {
61
69
  const arrayAIncludesElementB = arrayA.includes(elementB);
62
70
 
@@ -65,16 +73,3 @@ function rightDifference(arrayA, arrayB) {
65
73
  }
66
74
  });
67
75
  }
68
-
69
- module.exports = {
70
- push,
71
- last,
72
- prune,
73
- first,
74
- third,
75
- second,
76
- filter,
77
- someSubArray,
78
- leftDifference,
79
- rightDifference
80
- };
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
 
3
- const { first, second, third } = require("../utilities/array"),
4
- { METASTATEMENT_RULE_NAME } = require("../ruleNames"),
5
- { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH } = require("../constants");
3
+ import { first, second, third } from "../utilities/array";
4
+ import { METASTATEMENT_RULE_NAME } from "../ruleNames";
5
+ import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH } from "../constants";
6
6
 
7
- function matchBracketedMetastatementChildNode(childNodes, callback) {
8
- let bracketedMetastatementChildNodeMatches = false;
7
+ export function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
8
+ let bracketedMetastatementChildNode = null;
9
9
 
10
10
  const childNodesLength = childNodes.length;
11
11
 
@@ -29,16 +29,22 @@ function matchBracketedMetastatementChildNode(childNodes, callback) {
29
29
  nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
30
30
 
31
31
  if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
32
- const bracketedMetastatementChildNode = nonTerminalNode; ///
33
-
34
- bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
32
+ bracketedMetastatementChildNode = nonTerminalNode; ///
35
33
  }
36
34
  }
37
35
  }
38
36
 
39
- return bracketedMetastatementChildNodeMatches;
37
+ return bracketedMetastatementChildNode;
40
38
  }
41
39
 
42
- module.exports = {
43
- matchBracketedMetastatementChildNode
44
- };
40
+ export function matchBracketedMetastatementChildNode(childNodes, callback) {
41
+ let bracketedMetastatementChildNodeMatches = false;
42
+
43
+ const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
44
+
45
+ if (bracketedMetastatementChildNode !== null) {
46
+ bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
47
+ }
48
+
49
+ return bracketedMetastatementChildNodeMatches;
50
+ }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- const { fileSystemUtilities } = require("necessary");
3
+ import { fileSystemUtilities } from "necessary";
4
4
 
5
- const { push, last, first } = require("../utilities/array"),
6
- { MAXIMUM_INDEXES_LENGTH, MAXIMUM_PERMUTATION_LENGTH } = require("../constants");
5
+ import { push, last, first } from "../utilities/array";
6
+ import { MAXIMUM_INDEXES_LENGTH, MAXIMUM_PERMUTATION_LENGTH } from "../constants";
7
7
 
8
8
  const { writeFile } = fileSystemUtilities;
9
9
 
@@ -37,7 +37,7 @@ function writePermutationsMatrixFile() {
37
37
 
38
38
  const permutationsMatrix = ${permutationsMatrixJSON};
39
39
 
40
- module.exports = permutationsMatrix;
40
+ export default permutationsMatrix;
41
41
  `;
42
42
 
43
43
  writeFile(permutationsMatrixFileName, permutationsMatrixFileContent)
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- const { Query } = require("occam-dom");
3
+ import { Query } from "occam-dom";
4
4
 
5
5
  const typeTerminalNodeQuery = nodeQuery("/type/@type"),
6
6
  labelNameTerminalNodeQuery = nodeQuery("/label/@name"),
@@ -8,7 +8,7 @@ const typeTerminalNodeQuery = nodeQuery("/type/@type"),
8
8
  referenceNameTerminalNodeQuery = nodeQuery("/reference/@name"),
9
9
  metavariableNameTerminalNodeQuery = nodeQuery("/metavariable/@name");
10
10
 
11
- function nodeQuery(expression) {
11
+ export function nodeQuery(expression) {
12
12
  const query = Query.fromExpression(expression);
13
13
 
14
14
  return function(node) {
@@ -22,7 +22,7 @@ function nodeQuery(expression) {
22
22
  };
23
23
  }
24
24
 
25
- function nodesQuery(expression) {
25
+ export function nodesQuery(expression) {
26
26
  const query = Query.fromExpression(expression);
27
27
 
28
28
  return function(node) {
@@ -36,7 +36,7 @@ function nodesQuery(expression) {
36
36
  };
37
37
  }
38
38
 
39
- function typeNameFromTypeNode(typeNode) {
39
+ export function typeNameFromTypeNode(typeNode) {
40
40
  let typeName = null;
41
41
 
42
42
  if (typeNode !== null) {
@@ -49,7 +49,7 @@ function typeNameFromTypeNode(typeNode) {
49
49
  return typeName;
50
50
  }
51
51
 
52
- function labelNameFromLabelNode(labelNode) {
52
+ export function labelNameFromLabelNode(labelNode) {
53
53
  const labelNameTerminalNode = labelNameTerminalNodeQuery(labelNode),
54
54
  labelNameTerminalNodeContent = labelNameTerminalNode.getContent(),
55
55
  labelName = labelNameTerminalNodeContent; ///
@@ -57,7 +57,7 @@ function labelNameFromLabelNode(labelNode) {
57
57
  return labelName;
58
58
  }
59
59
 
60
- function variableNameFromVariableNode(variableNode) {
60
+ export function variableNameFromVariableNode(variableNode) {
61
61
  const variableNameTerminalNode = variableNameTerminalNodeQuery(variableNode),
62
62
  variableNameTerminalNodeContent = variableNameTerminalNode.getContent(),
63
63
  variableName = variableNameTerminalNodeContent; ///
@@ -65,7 +65,7 @@ function variableNameFromVariableNode(variableNode) {
65
65
  return variableName;
66
66
  }
67
67
 
68
- function referenceNameFromReferenceNode(referenceNode) {
68
+ export function referenceNameFromReferenceNode(referenceNode) {
69
69
  const referenceNameTerminalNode = referenceNameTerminalNodeQuery(referenceNode),
70
70
  referenceNameTerminalNodeContent = referenceNameTerminalNode.getContent(),
71
71
  referenceName = referenceNameTerminalNodeContent; ///
@@ -73,20 +73,10 @@ function referenceNameFromReferenceNode(referenceNode) {
73
73
  return referenceName;
74
74
  }
75
75
 
76
- function metavariableNameFromMetavariableNode(metavariableNode) {
76
+ export function metavariableNameFromMetavariableNode(metavariableNode) {
77
77
  const metavariableNameTerminalNode = metavariableNameTerminalNodeQuery(metavariableNode),
78
78
  metavariableNameTerminalNodeContent = metavariableNameTerminalNode.getContent(),
79
79
  metavariableName = metavariableNameTerminalNodeContent; ///
80
80
 
81
81
  return metavariableName;
82
82
  }
83
-
84
- module.exports = {
85
- nodeQuery,
86
- nodesQuery,
87
- typeNameFromTypeNode,
88
- labelNameFromLabelNode,
89
- variableNameFromVariableNode,
90
- referenceNameFromReferenceNode,
91
- metavariableNameFromMetavariableNode
92
- };
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- const { COMMA, EMPTY_STRING } = require("../constants");
3
+ import { COMMA, EMPTY_STRING } from "../constants";
4
4
 
5
- function nodeAsString(node, string = EMPTY_STRING) {
5
+ export function nodeAsString(node, string = EMPTY_STRING) {
6
6
  const nodeTerminalNode = node.isTerminalNode();
7
7
 
8
8
  if (nodeTerminalNode) {
@@ -22,7 +22,7 @@ function nodeAsString(node, string = EMPTY_STRING) {
22
22
  return string;
23
23
  }
24
24
 
25
- function nodesAsString(nodes) {
25
+ export function nodesAsString(nodes) {
26
26
  const string = nodes.reduce((string, node) => {
27
27
  const nodeString = nodeAsString(node);
28
28
 
@@ -38,14 +38,8 @@ function nodesAsString(nodes) {
38
38
  return string;
39
39
  }
40
40
 
41
- function labelsAsString(labels) {
41
+ export function labelsAsString(labels) {
42
42
  const labelsString = labels.join(COMMA);
43
43
 
44
44
  return labelsString;
45
45
  }
46
-
47
- module.exports = {
48
- nodeAsString,
49
- nodesAsString,
50
- labelsAsString
51
- };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- class Variable {
3
+ export default class Variable {
4
4
  constructor(type, name, value) {
5
5
  this.type = type;
6
6
  this.name = name;
@@ -50,5 +50,3 @@ class Variable {
50
50
  return variable;
51
51
  }
52
52
  }
53
-
54
- module.exports = Variable;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import verifyUnqualifiedStatement from "../verify/metastatement/unqualified";
4
+
5
+ import { nodesQuery } from "../utilities/query";
6
+
7
+ const unqualifiedStatementNodesQuery = nodesQuery("/indicativeConditional/unqualifiedStatement");
8
+
9
+ export default function verifyIndicativeConditional(indicativeConditionalNode, statementNodes, context) {
10
+ const unqualifiedStatementNodes = unqualifiedStatementNodesQuery(indicativeConditionalNode),
11
+ indicativeConditionalVerified = unqualifiedStatementNodes.every((unqualifiedStatementNode) => {
12
+ const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, context);
13
+
14
+ if (unqualifiedStatementVerified) {
15
+ return true;
16
+ }
17
+ });
18
+
19
+ return indicativeConditionalVerified;
20
+ }
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
 
3
- const { loggingUtilities } = require("necessary");
3
+ import Variable from "../../variable";
4
+ import verifyTermAsVariable from "../../verify/termAsVariable";
4
5
 
5
- const Variable = require("../../variable"),
6
- verifyTermAsVariable = require("../../verify/termAsVariable");
7
-
8
- const { first } = require("../../utilities/array"),
9
- { nodeQuery, typeNameFromTypeNode } = require("../../utilities/query");
10
-
11
- const { log } = loggingUtilities;
6
+ import { first } from "../../utilities/array";
7
+ import { nodeQuery, typeNameFromTypeNode } from "../../utilities/query";
12
8
 
13
9
  const termNodeQuery = nodeQuery("/typeAssertion/term"),
14
10
  typeNodeQuery = nodeQuery("/typeAssertion/type");
15
11
 
16
- function verifyTypeAssertion(typeAssertionNode, context) {
12
+ export default function verifyTypeAssertion(typeAssertionNode, context) {
17
13
  let typeAssertionVerified = false;
18
14
 
19
15
  const typeNode = typeNodeQuery(typeAssertionNode),
@@ -21,7 +17,7 @@ function verifyTypeAssertion(typeAssertionNode, context) {
21
17
  typePresent = context.isTypePresentByTypeName(typeName);
22
18
 
23
19
  if (!typePresent) {
24
- log.error(`The ${typeName} type is not present.`);
20
+ context.error(`The ${typeName} type is not present.`);
25
21
  } else {
26
22
  const derived = context.isDerived();
27
23
 
@@ -41,7 +37,7 @@ function verifyTypeAssertion(typeAssertionNode, context) {
41
37
  value = firstValue;
42
38
 
43
39
  if (value !== undefined) {
44
- log.error(`The value of the ${variableName} variable is not undefined.`);
40
+ context.error(`The value of the ${variableName} variable is not undefined.`);
45
41
  } else {
46
42
  const type = context.findTypeByTypeName(typeName),
47
43
  firstType = first(types),
@@ -49,7 +45,7 @@ function verifyTypeAssertion(typeAssertionNode, context) {
49
45
  typeSubTypeOfVariableType = type.isSubTypeOf(variableType);
50
46
 
51
47
  if (!typeSubTypeOfVariableType) {
52
- log.error(`The asserted type of the ${variableName} variable is not a sub-type of its declared type.`);
48
+ context.error(`The asserted type of the ${variableName} variable is not a sub-type of its declared type.`);
53
49
  } else {
54
50
  const name = variableName, ///
55
51
  variable = Variable.fromTypeAndName(type, name);
@@ -65,5 +61,3 @@ function verifyTypeAssertion(typeAssertionNode, context) {
65
61
 
66
62
  return typeAssertionVerified;
67
63
  }
68
-
69
- module.exports = verifyTypeAssertion;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ import ProofContext from "../context/proof";
4
+ import verifyUnqualifiedStatement from "../verify/statement/unqualified";
5
+ import verifyIndicativeConditional from "../verify/indicativeConditional";
6
+
7
+ import { first, second } from "../utilities/array";
8
+ import { nodesAsString } from "../utilities/string";
9
+ import { nodeQuery, nodesQuery } from "../utilities/query";
10
+
11
+ const labelNodesQuery = nodesQuery("/axiom/label"),
12
+ statementNodeQuery = nodeQuery("/*/statement"),
13
+ unqualifiedStatementNodeQuery = nodeQuery("/axiom/unqualifiedStatement!"),
14
+ indicativeConditionalNodeQuery = nodeQuery("/axiom/indicativeConditional!");
15
+
16
+ export default function verifyAxiom(axiomNode, context) {
17
+ const labelNodes = labelNodesQuery(axiomNode),
18
+ labelsString = nodesAsString(labelNodes);
19
+
20
+ context.debug(`Verifying the '${labelsString}' axiom...`);
21
+
22
+ const proofContext = ProofContext.fromContext(context);
23
+
24
+ context = proofContext; ///
25
+
26
+ const unqualifiedStatementNode = unqualifiedStatementNodeQuery(axiomNode),
27
+ indicativeConditionalNode = indicativeConditionalNodeQuery(axiomNode);
28
+
29
+ let axiomVerified = false;
30
+
31
+ if (unqualifiedStatementNode !== null) {
32
+ const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, context);
33
+
34
+ if (unqualifiedStatementVerified) {
35
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
36
+ labels = labelsString, ///
37
+ axiom = Axiom.fromStatementNodeAndLabels(statementNode, labels);
38
+
39
+ context.addAxiom(axiom);
40
+
41
+ axiomVerified = true;
42
+ }
43
+ }
44
+
45
+ if (indicativeConditionalNode !== null) {
46
+ const statementNodes = [],
47
+ indicativeConditionalVerified = verifyIndicativeConditional(indicativeConditionalNode, statementNodes, context);
48
+
49
+ if (indicativeConditionalVerified !== null) {
50
+ const labels = labelsString, ///
51
+ firstStatementNode = first(statementNodes),
52
+ secondStatementNode = second(statementNodes),
53
+ suppositionStatementNode = firstStatementNode, ///
54
+ consequentStatementNode = secondStatementNode, ///
55
+ axiom = Axiom.fromSuppositionStatementNodeConsequentStatementNodeAndLabels(suppositionStatementNode, consequentStatementNode, labels);
56
+
57
+ context.addAxiom(axiom);
58
+
59
+ axiomVerified = true;
60
+ }
61
+ }
62
+
63
+ if (axiomVerified) {
64
+ context.info(`Verified the '${labelsString}' axiom.`);
65
+ }
66
+
67
+ return axiomVerified;
68
+ }
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
 
3
- const Conclusion = require("../conclusion"),
4
- verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
3
+ import Conclusion from "../conclusion";
4
+ import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
5
5
 
6
- const { nodeQuery } = require("../utilities/query");
6
+ import { nodeQuery } from "../utilities/query";
7
7
 
8
8
  const metastatementNodeQuery = nodeQuery("/*/metastatement!"),
9
9
  unqualifiedMetastatementNodeQuery = nodeQuery("/conclusion/unqualifiedMetastatement!");
10
10
 
11
- function verifyConclusion(conclusionNode, conclusions, context) {
11
+ export default function verifyConclusion(conclusionNode, conclusions, context) {
12
12
  let conclusionVerified = false;
13
13
 
14
14
  const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode);
@@ -28,5 +28,3 @@ function verifyConclusion(conclusionNode, conclusions, context) {
28
28
 
29
29
  return conclusionVerified;
30
30
  }
31
-
32
- module.exports = verifyConclusion;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ import verifyConclusion from "../verify/conclusion";
4
+ import verifyPremiseOrPremises from "../verify/premiseOrPremises";
5
+
6
+ import { nodeQuery } from "../utilities/query";
7
+
8
+ const conclusionNodeQuery = nodeQuery("/conditionalInference/conclusion!"),
9
+ premiseOrPremisesNodeQuery = nodeQuery("/conditionalInference/premise|premises!");
10
+
11
+ export default function verifyConditionalInference(conditionalInferenceNode, premises, conclusions, context) {
12
+ let conditionalInferenceVerified = false;
13
+
14
+ const conclusionNode = conclusionNodeQuery(conditionalInferenceNode),
15
+ premiseOrPremisesNode = premiseOrPremisesNodeQuery(conditionalInferenceNode),
16
+ premiseOrPremisesVerified = verifyPremiseOrPremises(premiseOrPremisesNode, premises, context);
17
+
18
+ if (premiseOrPremisesVerified) {
19
+ const conclusionVerified = verifyConclusion(conclusionNode, conclusions, context);
20
+
21
+ conditionalInferenceVerified = conclusionVerified;
22
+ }
23
+
24
+ return conditionalInferenceVerified;
25
+ }
@@ -1,17 +1,15 @@
1
1
  "use strict";
2
2
 
3
- const verifyStatementAsCombinator = require("../../verify/statementAsCombinator");
3
+ import verifyStatementAsCombinator from "../../verify/statementAsCombinator";
4
4
 
5
- const { nodeQuery } = require("../../utilities/query");
5
+ import { nodeQuery } from "../../utilities/query";
6
6
 
7
7
  const statementNodeQuery = nodeQuery("/combinatorDeclaration/statement");
8
8
 
9
- function verifyCombinatorDeclaration(combinatorDeclarationNode, context) {
9
+ export default function verifyCombinatorDeclaration(combinatorDeclarationNode, context) {
10
10
  const statementNode = statementNodeQuery(combinatorDeclarationNode),
11
11
  statementVerifiedAsCombinator = verifyStatementAsCombinator(statementNode, context),
12
12
  combinatorDeclarationVerified = statementVerifiedAsCombinator; ///
13
13
 
14
14
  return combinatorDeclarationVerified;
15
15
  }
16
-
17
- module.exports = verifyCombinatorDeclaration;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- const verifyTermAsConstructor = require("../../verify/termAsConstructor");
3
+ import verifyTermAsConstructor from "../../verify/termAsConstructor";
4
4
 
5
- const { nodeQuery } = require("../../utilities/query");
5
+ import { nodeQuery } from "../../utilities/query";
6
6
 
7
7
  const termNodeQuery = nodeQuery("/constructorDeclaration/term"),
8
8
  typeNodeQuery = nodeQuery("/constructorDeclaration/type");
9
9
 
10
- function verifyConstructorDeclaration(constructorDeclarationNode, context) {
10
+ export default function verifyConstructorDeclaration(constructorDeclarationNode, context) {
11
11
  const termNode = termNodeQuery(constructorDeclarationNode),
12
12
  typeNode = typeNodeQuery(constructorDeclarationNode),
13
13
  termVerifiedAsConstructor = verifyTermAsConstructor(termNode, typeNode, context),
@@ -15,5 +15,3 @@ function verifyConstructorDeclaration(constructorDeclarationNode, context) {
15
15
 
16
16
  return constructorDeclarationVerified;
17
17
  }
18
-
19
- module.exports = verifyConstructorDeclaration;