occam-verify-cli 0.0.1005 → 0.0.1007

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.
package/src/metaType.js CHANGED
@@ -71,11 +71,13 @@ Object.assign(shim, {
71
71
  export default MetaType;
72
72
 
73
73
  export function metaTypeFromJSON(json, fileContext) {
74
- let metaType;
74
+ let metaType = null;
75
75
 
76
- const { name } = json;
76
+ if (json !== null) {
77
+ const { name } = json;
77
78
 
78
- metaType = new MetaType(name);
79
+ metaType = new MetaType(name);
80
+ }
79
81
 
80
82
  return metaType;
81
83
  }
@@ -2,13 +2,13 @@
2
2
 
3
3
  import { metaTypeFromJSON } from "./metaType";
4
4
  import { metavariableNameFromMetavariableNode } from "./utilities/name";
5
+ import { metavariableNodeFromMetavariableString } from "./utilities/node";
5
6
 
6
7
  export default class Metavariable {
7
- constructor(string, node, name, termType, metaType) {
8
+ constructor(string, node, name, metaType) {
8
9
  this.string = string;
9
10
  this.node = node;
10
11
  this.name = name;
11
- this.termType = termType;
12
12
  this.metaType = metaType;
13
13
  }
14
14
 
@@ -24,10 +24,6 @@ export default class Metavariable {
24
24
  return this.name;
25
25
  }
26
26
 
27
- getTermType() {
28
- return this.termType;
29
- }
30
-
31
27
  getMetaType() {
32
28
  return this.metaType;
33
29
  }
@@ -80,8 +76,7 @@ export default class Metavariable {
80
76
 
81
77
  const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
82
78
  name = metavariableName, ///
83
- termType = termTypeFromMetavariableNode(metavariableNode, fileContext),
84
- metavariable = new Metavariable(string, node, name, termType, metaType);
79
+ metavariable = new Metavariable(string, node, name, metaType);
85
80
 
86
81
  return metavariable;
87
82
  }
@@ -91,19 +86,18 @@ export default class Metavariable {
91
86
  name = metavariableName, ///
92
87
  node = metavariableNode, ///
93
88
  string = fileContext.nodeAsString(node),
94
- termType = null,
95
89
  metaType = null,
96
- metavariable = new Metavariable(string, node, name, termType, metaType);
90
+ metavariable = new Metavariable(string, node, name, metaType);
97
91
 
98
92
  return metavariable;
99
93
  }
100
94
 
101
- static fromMetavariableNodeNameTermTypeAndMetaType(metavariableNode, termType, metaType, fileContext) {
95
+ static fromMetavariableNodeAndMetaType(metavariableNode, metaType, fileContext) {
102
96
  const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
103
97
  name = metavariableName, ///
104
98
  node = metavariableNode, ///
105
99
  string = fileContext.nodeAsString(node),
106
- metavariable = new Metavariable(string, node, name, termType, metaType);
100
+ metavariable = new Metavariable(string, node, name, metaType);
107
101
 
108
102
  return metavariable;
109
103
  }
package/src/premise.js CHANGED
@@ -6,8 +6,10 @@ import metaLevelUnifier from "./unifier/metaLevel";
6
6
  import SubproofAssertion from "./assertion/subproof";
7
7
  import UnqualifiedStatement from "./statement/unqualified";
8
8
 
9
+ import { trim } from "./utilities/string";
9
10
  import { nodeQuery } from "./utilities/query";
10
11
  import { assignAssignments } from "./utilities/assignments";
12
+ import { unqualifiedStatementNodeFromUnqualifiedStatementString } from "./utilities/node";
11
13
 
12
14
  const unqualifiedStatementNodeQuery = nodeQuery("/premise/unqualifiedStatement");
13
15
 
@@ -106,9 +108,10 @@ export default class Premise {
106
108
  }
107
109
 
108
110
  verify(localContext) {
109
- let verified = false;
111
+ let verified = false,
112
+ premiseString = this.getString(); ///
110
113
 
111
- const premiseString = this.getString(); ///
114
+ premiseString = trim(premiseString); ///
112
115
 
113
116
  if (this.unqualifiedStatement !== null) {
114
117
  localContext.trace(`Verifying the '${premiseString}' premise...`);
@@ -150,7 +153,16 @@ export default class Premise {
150
153
  }
151
154
 
152
155
  static fromJSON(json, fileContext) {
153
- let premise = null;
156
+ let { unqualifiedStatement } = json;
157
+
158
+ const lexer = fileContext.getLexer(),
159
+ parser = fileContext.getParser(),
160
+ unqualifiedStatementString = unqualifiedStatement, ///
161
+ unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementString(unqualifiedStatementString, lexer, parser);
162
+
163
+ unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext);
164
+
165
+ const premise = new Premise(fileContext, unqualifiedStatement);
154
166
 
155
167
  return premise;
156
168
  }
package/src/ruleNames.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  export const TERM_RULE_NAME = "term";
4
+ export const METAVARIABLE_RULE_NAME = "metavariable";
4
5
  export const UNQUALIFIED_STATEMENT_RULE_NAME = "unqualifiedStatement";
@@ -3,17 +3,11 @@
3
3
  import ProofStep from "./proofStep";
4
4
  import UnqualifiedStatement from "./statement/unqualified";
5
5
 
6
- import metaLevelUnifier from "./unifier/metaLevel";
7
-
8
- import { match } from "./utilities/array";
6
+ import { trim } from "./utilities/string";
7
+ import { nodeQuery } from "./utilities/query";
9
8
  import { assignAssignments } from "./utilities/assignments";
10
- import { nodeQuery, nodesQuery } from "./utilities/query";
11
9
 
12
- const subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
13
- unqualifiedStatementNodeQuery = nodeQuery("/supposition/unqualifiedStatement"),
14
- subproofAssertionStatementNodesQuery = nodesQuery("/subproofAssertion/statement"),
15
- subproofSuppositionStatementNodesQuery = nodesQuery("/subproof/supposition/unqualifiedStatement/statement!"),
16
- subproofLastProofStepStatementNodeQuery = nodeQuery("/subproof/subDerivation/lastProofStep/unqualifiedStatement|qualifiedStatement/statement!");
10
+ const unqualifiedStatementNodeQuery = nodeQuery("/supposition/unqualifiedStatement");
17
11
 
18
12
  export default class Supposition {
19
13
  constructor(fileContext, unqualifiedStatement) {
@@ -79,9 +73,10 @@ export default class Supposition {
79
73
  // }
80
74
 
81
75
  verify(localContext) {
82
- let verified = false;
76
+ let verified = false,
77
+ suppositionString = this.getString(); ///
83
78
 
84
- const suppositionString = this.getString(); ///
79
+ suppositionString = trim(suppositionString); ///
85
80
 
86
81
  if (this.unqualifiedStatement !== null) {
87
82
  localContext.trace(`Verifying the '${suppositionString}' supposition...`);
@@ -4,8 +4,12 @@ import { parsersUtilities } from "occam-custom-grammars";
4
4
 
5
5
  import { nodeQuery } from "../utilities/query";
6
6
  import { combinedCustomGrammarFromNothing } from "./customGrammar";
7
- import { TERM_RULE_NAME, UNQUALIFIED_STATEMENT_RULE_NAME } from "../ruleNames";
8
- import { termTokensFromTermString, unqualifiedStatementTokensFromUnqualifiedStatementString } from "../utilities/tokens";
7
+ import { TERM_RULE_NAME,
8
+ METAVARIABLE_RULE_NAME,
9
+ UNQUALIFIED_STATEMENT_RULE_NAME } from "../ruleNames";
10
+ import { termTokensFromTermString,
11
+ metavariableTokensFromMetavariableString,
12
+ unqualifiedStatementTokensFromUnqualifiedStatementString } from "../utilities/tokens";
9
13
 
10
14
  const { nominalParserFromCombinedCustomGrammar } = parsersUtilities;
11
15
 
@@ -31,6 +35,20 @@ export function statementNodeFromStatementString(statementString, lexer, parser)
31
35
  return statementNode;
32
36
  }
33
37
 
38
+ export function metavariableNodeFromMetavariableString(metavariableString, lexer, parser) {
39
+ const metavariableTokens = metavariableTokensFromMetavariableString(metavariableString, lexer),
40
+ metavariableNode = metavariableNodeFromMetavariableTokens(metavariableTokens, parser);
41
+
42
+ return metavariableNode;
43
+ }
44
+
45
+ export function unqualifiedStatementNodeFromUnqualifiedStatementString(unqualifiedStatementString, lexer, parser) {
46
+ const unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
47
+ unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser);
48
+
49
+ return unqualifiedStatementNode;
50
+ }
51
+
34
52
  export function termNodeFromTermTokens(termTokens, parser) {
35
53
  const tokens = termTokens, ///
36
54
  ruleName = TERM_RULE_NAME,
@@ -39,6 +57,13 @@ export function termNodeFromTermTokens(termTokens, parser) {
39
57
  return termNode;
40
58
  }
41
59
 
60
+ export function metavariableNodeFromMetavariableTokens(metavariableTokens, parser) {
61
+ const ruleName = METAVARIABLE_RULE_NAME,
62
+ metavariableNode = nodeFromTokensRuleNameAndParser(metavariableTokens, ruleName, parser);
63
+
64
+ return metavariableNode;
65
+ }
66
+
42
67
  export function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
43
68
  const tokens = unqualifiedStatementTokens, ///
44
69
  ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
@@ -9,9 +9,8 @@ export function createReleaseContext(dependency, dependentNames, context, callba
9
9
  releaseContext = releaseContextMap[releaseName] || null;
10
10
 
11
11
  if (releaseContext !== null) {
12
- const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
13
-
14
- const error = null;
12
+ const error = null,
13
+ releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
15
14
 
16
15
  let success;
17
16
 
@@ -102,20 +101,16 @@ export function initialiseReleaseContext(dependency, context) {
102
101
  releaseContextInitialised = releaseContext.isInitialised();
103
102
 
104
103
  if (!releaseContextInitialised) {
105
- const dependencyReleaseContextsInitialised = initialiseDependencyReleaseContexts(dependency, releaseContext, context);
104
+ initialiseDependencyReleaseContexts(dependency, releaseContext, context);
106
105
 
107
- if (dependencyReleaseContextsInitialised) {
108
- const { log } = context,
109
- releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
106
+ const { log } = context,
107
+ releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
110
108
 
111
- log.debug(`Initialising the '${dependencyName}' context...`);
109
+ log.debug(`Initialising the '${dependencyName}' context...`);
112
110
 
113
- releaseContextInitialised = releaseContext.initialise(releaseContexts);
111
+ releaseContext.initialise(releaseContexts);
114
112
 
115
- releaseContextInitialised ?
116
- log.info(`...initialised the '${dependencyName}' context.`) :
117
- log.warning(`...unable to initialise the '${dependencyName}' context.`);
118
- }
113
+ log.info(`...initialised the '${dependencyName}' context.`);
119
114
  }
120
115
  }
121
116
 
@@ -16,6 +16,13 @@ export function termTokensFromTermString(termString, lexer) {
16
16
  return termTokens;
17
17
  }
18
18
 
19
+ export function metavariableTokensFromMetavariableString(metavariableString, lexer) {
20
+ const metavariableContent = `${metavariableString}`,
21
+ metavariableTokens = tokensFromContentAndLexer(metavariableContent, lexer);
22
+
23
+ return metavariableTokens;
24
+ }
25
+
19
26
  export function unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer) {
20
27
  const content = unqualifiedStatementString, ///
21
28
  unqualifiedStatementTokens = tokensFromContentAndLexer(content, lexer);
@@ -52,24 +52,13 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
52
52
  metaTypeVerified = verifyMetaType(metaTypeNode, metaTypes, fileContext);
53
53
 
54
54
  if (argumentVerified && metaTypeVerified) {
55
- let termType,
56
- metaType;
55
+ let metaType;
57
56
 
58
57
  const firstMetaType = first(metaTypes);
59
58
 
60
59
  metaType = firstMetaType; ///
61
60
 
62
- const termTypesLength = termTypes.length;
63
-
64
- if (termTypesLength === 0) {
65
- termType = null;
66
- } else {
67
- const firstTermType = first(termTypes);
68
-
69
- termType = firstTermType; ///
70
- }
71
-
72
- const metavariable = Metavariable.fromMetavariableNodeNameTermTypeAndMetaType(metavariableNode, termType, metaType, fileContext),
61
+ const metavariable = Metavariable.fromMetavariableNodeAndMetaType(metavariableNode, metaType, fileContext),
73
62
  metavariableAssignment = MetavariableAssignment.fromMetavariable(metavariable),
74
63
  metavariableAssigned = metavariableAssignment.assign(fileContext);
75
64
 
@@ -19,7 +19,7 @@ export default function verifyFiles(releaseContext) {
19
19
  if (filePathNominalFilePath) {
20
20
  return true;
21
21
  }
22
- })
22
+ });
23
23
 
24
24
  for (;;) {
25
25
  const filePathsLength = filePaths.length;
@@ -2,34 +2,46 @@
2
2
 
3
3
  import verifyFiles from "../verify/files";
4
4
 
5
- export default function verifyRelease(releaseName, releaseContextMap) {
5
+ export default function verifyRelease(releaseName, dependentName, dependentReleased, releaseContextMap) {
6
6
  let releaseVerified = false;
7
7
 
8
8
  const releaseContext = releaseContextMap[releaseName];
9
9
 
10
10
  if (releaseContext !== null) {
11
- const dependencyReleasesVVerified = verifyDependencyReleases(releaseContext, releaseContextMap);
11
+ const released = releaseContext.isReleased();
12
12
 
13
- if (dependencyReleasesVVerified) {
14
- const verified = releaseContext.isVerified();
15
-
16
- if (verified) {
17
- releaseVerified = true;
13
+ if (released) {
14
+ releaseVerified = true;
15
+ } else {
16
+ if (dependentReleased) {
17
+ releaseContext.warning(`The '${releaseName}' project cannot be verified because its '${dependentName}' dependent is a package.`);
18
18
  } else {
19
- releaseContext.info(`Verifying the '${releaseName}' project...`);
19
+ const dependentName = releaseName, ///
20
+ dependentReleased = released, ///
21
+ dependencyReleasesVVerified = verifyDependencyReleases(releaseContext, dependentName, dependentReleased, releaseContextMap);
20
22
 
21
- const releaseFilesVerified = verifyReleaseFiles(releaseContext);
23
+ if (dependencyReleasesVVerified) {
24
+ const verified = releaseContext.isVerified();
22
25
 
23
- if (releaseFilesVerified) {
24
- const verified = true;
26
+ if (verified) {
27
+ releaseVerified = true;
28
+ } else {
29
+ releaseContext.info(`Verifying the '${releaseName}' project...`);
25
30
 
26
- releaseContext.setVerified(verified);
31
+ const releaseFilesVerified = verifyReleaseFiles(releaseContext);
27
32
 
28
- releaseVerified = verified; ///
29
- }
33
+ if (releaseFilesVerified) {
34
+ const verified = true;
35
+
36
+ releaseContext.setVerified(verified);
30
37
 
31
- if (releaseVerified) {
32
- releaseContext.info(`...verified the '${releaseName}' project.`);
38
+ releaseVerified = verified; ///
39
+ }
40
+
41
+ if (releaseVerified) {
42
+ releaseContext.info(`...verified the '${releaseName}' project.`);
43
+ }
44
+ }
33
45
  }
34
46
  }
35
47
  }
@@ -45,12 +57,12 @@ function verifyReleaseFiles(releaseContext) {
45
57
  return releaseFilesVerified;
46
58
  }
47
59
 
48
- function verifyDependencyReleases(releaseContext, releaseContextMap) {
60
+ function verifyDependencyReleases(releaseContext, dependentName, dependentReleased, releaseContextMap) {
49
61
  const dependencies = releaseContext.getDependencies(),
50
62
  dependencyReleasesVVerified = dependencies.everyDependency((dependency) => {
51
63
  const name = dependency.getName(),
52
64
  releaseName = name, ///
53
- releaseVerified = verifyRelease(releaseName, releaseContextMap);
65
+ releaseVerified = verifyRelease(releaseName, dependentName, dependentReleased, releaseContextMap);
54
66
 
55
67
  if (releaseVerified) {
56
68
  return true;