occam-verify-cli 0.0.877 → 0.0.879

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.
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ import labelMetaType from "../metaType/label";
4
+ import metastatementNodeVerifier from "../verifier/node/metastatement";
5
+
6
+ import { nodeQuery } from "../utilities/query";
7
+
8
+ const metavariableNodeQuery = nodeQuery("/declaration/metavariable!"),
9
+ metastatementNodeQuery = nodeQuery("/declaration/metastatement!");
10
+
11
+ export default function verifyDeclaration(declarationNode, derived, localMetaContext) {
12
+ let declarationVerified = false;
13
+
14
+ const declarationString = localMetaContext.nodeAsString(declarationNode);
15
+
16
+ localMetaContext.trace(`Verifying the '${declarationString}' declaration...`, declarationNode);
17
+
18
+ const metavariableNode = metavariableNodeQuery(declarationNode),
19
+ metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
20
+
21
+ if (metavariable !== null) {
22
+ const metaType = metavariable.getMetaType();
23
+
24
+ if (metaType === labelMetaType) {
25
+ const metastatementNode = metastatementNodeQuery(declarationNode);
26
+
27
+ if (metastatementNode !== null) {
28
+ const { verifyMetastatement } = metastatementNodeVerifier,
29
+ assignments = [],
30
+ metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
31
+ const verifiedAhead = true;
32
+
33
+ return verifiedAhead;
34
+ });
35
+
36
+ declarationVerified = metastatementVerified; ///
37
+ }
38
+ } else {
39
+ const metavariableString = localMetaContext.nodeAsString(metavariableNode),
40
+ labelMetaTypeName = labelMetaType.getName(),
41
+ metaTypeString = metaType.asString();
42
+
43
+ localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${labelMetaTypeName}'.`, declarationNode);
44
+ }
45
+ }
46
+
47
+ if (declarationVerified) {
48
+ localMetaContext.debug(`...verified the '${declarationString}' declaration.`, declarationNode);
49
+ }
50
+
51
+ return declarationVerified;
52
+ }
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ import verifyContext from "../verify/context";
3
4
  import contextMetaType from "../metaType/context";
4
5
 
5
6
  import { nodeQuery } from "../utilities/query";
6
- import { CONTEXT_META_TYPE_NAME } from "../metaTypeNames";
7
7
 
8
- const contextNodeQuery = nodeQuery("/judgement/context!"),
8
+ const contextNodeQuery = nodeQuery("/judgement/metastatement/context!"),
9
9
  metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
10
10
 
11
11
  export default function verifyJudgement(judgementNode, derived, localMetaContext) {
12
- let judgementVerified;
12
+ let judgementVerified = false;
13
13
 
14
14
  const judgementString = localMetaContext.nodeAsString(judgementNode);
15
15
 
16
16
  localMetaContext.trace(`Verifying the '${judgementString}' judgement...`, judgementNode);
17
17
 
18
18
  const metavariableNode = metavariableNodeQuery(judgementNode),
19
- metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode);
19
+ metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
20
20
 
21
21
  if (metavariable !== null) {
22
22
  const metaType = metavariable.getMetaType();
@@ -24,12 +24,19 @@ export default function verifyJudgement(judgementNode, derived, localMetaContext
24
24
  if (metaType === contextMetaType) {
25
25
  const contextNode = contextNodeQuery(judgementNode);
26
26
 
27
+ if (contextNode !== null) {
28
+ const contextVerified = verifyContext(contextNode, derived, localMetaContext);
27
29
 
30
+ judgementVerified = contextVerified; ///
31
+ } else {
32
+ localMetaContext.debug(`The right hand side of the '${judgementString}' judgement must be a context.`, judgementNode);
33
+ }
28
34
  } else {
29
- const metavariableString = localMetaContext.nodeAsString(metavariableNode),
35
+ const contextMetaTypeName = contextMetaType.getName(),
36
+ metavariableString = localMetaContext.nodeAsString(metavariableNode),
30
37
  metaTypeString = metaType.asString();
31
38
 
32
- localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${CONTEXT_META_TYPE_NAME}'.`, judgementNode);
39
+ localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${contextMetaTypeName}'.`, judgementNode);
33
40
  }
34
41
  }
35
42
 
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ import MetaEquality from "../metaEquality";
4
+ import MetaEqualityAssignment from "../assignment/metaEquality";
5
+
6
+ import { nodeQuery } from "../utilities/query";
7
+
8
+ const leftMetastatementNodeQuery = nodeQuery("/metaEquality/metastatement[0]"),
9
+ rightMetastatementNodeQuery = nodeQuery("/metaEquality/metastatement[1]");
10
+
11
+ export default function verifyMetaEquality(metaEqualityNode, assignments, derived, localMetaContext) {
12
+ let metaEqualityVerified;
13
+
14
+ const metaEqualityString = localMetaContext.nodeAsString(metaEqualityNode);
15
+
16
+ localMetaContext.trace(`Verifying the '${metaEqualityString}' meta-equality...`, metaEqualityNode);
17
+
18
+ const verifyMetaEqualityFunctions = [
19
+ verifyDerivedMetaEquality,
20
+ verifyStatedMetaEquality
21
+ ];
22
+
23
+ metaEqualityVerified = verifyMetaEqualityFunctions.some((verifyMetaEqualityFunction) => {
24
+ const metaEqualityVerified = verifyMetaEqualityFunction(metaEqualityNode, assignments, derived, localMetaContext);
25
+
26
+ if (metaEqualityVerified) {
27
+ return true;
28
+ }
29
+ });
30
+
31
+ if (metaEqualityVerified) {
32
+ localMetaContext.debug(`...verified the '${metaEqualityString}' meta-equality.`, metaEqualityNode);
33
+ }
34
+
35
+ return metaEqualityVerified;
36
+ }
37
+
38
+ function verifyDerivedMetaEquality(metaEqualityNode, assignments, derived, localMetaContext) {
39
+ let derivedMetaEqualityVerified = false;
40
+
41
+ if (derived) {
42
+ const metaEqualityString = localMetaContext.nodeAsString(metaEqualityNode);
43
+
44
+ localMetaContext.trace(`Verifying the '${metaEqualityString}' derived meta-equality...`, metaEqualityNode);
45
+
46
+ const leftMetastatementNode = leftMetastatementNodeQuery(metaEqualityNode),
47
+ rightMetastatementNode = rightMetastatementNodeQuery(metaEqualityNode),
48
+ metaEquality = MetaEquality.fromLeftMetastatementNodeRightMetastatementNodeAndMetaEqualityNode(leftMetastatementNode, rightMetastatementNode, metaEqualityNode, localMetaContext);
49
+
50
+ if (metaEquality !== null) {
51
+ const metaEqualityAssignment = MetaEqualityAssignment.fromMetaEquality(metaEquality),
52
+ assignment = metaEqualityAssignment; ///
53
+
54
+ assignments.push(assignment);
55
+
56
+ derivedMetaEqualityVerified = true;
57
+ }
58
+
59
+ if (derivedMetaEqualityVerified) {
60
+ localMetaContext.debug(`...verified the '${metaEqualityString}' derived meta-equality.`, metaEqualityNode);
61
+ }
62
+ }
63
+
64
+ return derivedMetaEqualityVerified;
65
+ }
66
+
67
+ function verifyStatedMetaEquality(metaEqualityNode, assignments, derived, localMetaContext) {
68
+ let statedMetaEqualityVerified = false;
69
+
70
+ if (!derived) {
71
+ const metaEqualityString = localMetaContext.nodeAsString(metaEqualityNode);
72
+
73
+ localMetaContext.trace(`Verifying the '${metaEqualityString}' stated meta-equality...`, metaEqualityNode);
74
+
75
+ debugger
76
+
77
+ if (statedMetaEqualityVerified) {
78
+ localMetaContext.debug(`...verified the '${metaEqualityString}' stated meta-equality.`, metaEqualityNode);
79
+ }
80
+ }
81
+
82
+ return statedMetaEqualityVerified;
83
+ }
@@ -32,11 +32,11 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
32
32
  metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext);
33
33
 
34
34
  if (metavariablePresent) {
35
- const metastatementVerified = verifyMetastatement(metastatementNode, derived, localMetaContext, () => {
36
- const verifiedAhead = true;
35
+ const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
36
+ const verifiedAhead = true;
37
37
 
38
- return verifiedAhead;
39
- });
38
+ return verifiedAhead;
39
+ });
40
40
 
41
41
  qualifiedMetastatementVerified = metastatementVerified; ///
42
42
  }
@@ -23,11 +23,11 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
23
23
  }
24
24
 
25
25
  if (!unqualifiedMetastatementVerified) {
26
- const metastatementVerified = verifyMetastatement(metastatementNode, derived, localMetaContext, () => {
27
- const verifiedAhead = true;
26
+ const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
27
+ const verifiedAhead = true;
28
28
 
29
- return verifiedAhead;
30
- });
29
+ return verifiedAhead;
30
+ });
31
31
 
32
32
  unqualifiedMetastatementVerified = metastatementVerified; ///
33
33
  }
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyJudgement from "../verify/judgement";
4
+ import verifyMetaEquality from "../verify/metaEquality";
4
5
  import metastatementNodeVerifier from "../verifier/node/metastatement";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
7
8
 
8
- const judgementNodeQuery = nodeQuery("/metastatement/judgement!");
9
+ const judgementNodeQuery = nodeQuery("/metastatement/judgement!"),
10
+ metaEqualityNodeQuery = nodeQuery("/metastatement/metaEquality!");
9
11
 
10
- function verifyMetastatement(metastatementNode, derived, localMetaContext) {
12
+ function verifyMetastatement(metastatementNode, assignments, derived, localMetaContext) {
11
13
  let metastatementVerified;
12
14
 
13
15
  const metastatementString = localMetaContext.nodeAsString(metastatementNode);
@@ -15,12 +17,13 @@ function verifyMetastatement(metastatementNode, derived, localMetaContext) {
15
17
  localMetaContext.trace(`Verifying the '${metastatementString}' metastatement...`, metastatementNode);
16
18
 
17
19
  const verifyMetaStatementFunctions = [
20
+ verifyMetastatementAsMetaEquality,
18
21
  verifyMetastatementAsJudgement,
19
22
  verifyMetastatementAsIs
20
23
  ];
21
24
 
22
25
  metastatementVerified = verifyMetaStatementFunctions.some((verifyStatementFunction) => {
23
- const metastatementVerified = verifyStatementFunction(metastatementNode, derived, localMetaContext);
26
+ const metastatementVerified = verifyStatementFunction(metastatementNode, assignments, derived, localMetaContext);
24
27
 
25
28
  if (metastatementVerified) {
26
29
  return true;
@@ -40,7 +43,29 @@ Object.assign(metastatementNodeVerifier, {
40
43
 
41
44
  export default verifyMetastatement;
42
45
 
43
- function verifyMetastatementAsJudgement(metastatementNode, derived, localMetaContext) {
46
+ function verifyMetastatementAsMetaEquality(metastatementNode, assignments, derived, localMetaContext) {
47
+ let metastatementVerifiedAsMetaEquality = false;
48
+
49
+ const metaEqualityNode = metaEqualityNodeQuery(metastatementNode);
50
+
51
+ if (metaEqualityNode !== null) {
52
+ const metastatementString = localMetaContext.nodeAsString(metastatementNode);
53
+
54
+ localMetaContext.trace(`Verifying the '${metastatementString}' metastatement as a meta-equality...`, metastatementNode);
55
+
56
+ const metaEqualityVerified = verifyMetaEquality(metaEqualityNode, assignments, derived, localMetaContext);
57
+
58
+ metastatementVerifiedAsMetaEquality = metaEqualityVerified; ///
59
+
60
+ if (metastatementVerifiedAsMetaEquality) {
61
+ localMetaContext.debug(`...verified the '${metastatementString}' metastatement as a meta-equality.`, metastatementNode);
62
+ }
63
+ }
64
+
65
+ return metastatementVerifiedAsMetaEquality;
66
+ }
67
+
68
+ function verifyMetastatementAsJudgement(metastatementNode, assignments, derived, localMetaContext) {
44
69
  let metastatementVerifiedAsJudgement = false;
45
70
 
46
71
  const judgementNode = judgementNodeQuery(metastatementNode);
@@ -62,12 +87,13 @@ function verifyMetastatementAsJudgement(metastatementNode, derived, localMetaCon
62
87
  return metastatementVerifiedAsJudgement;
63
88
  }
64
89
 
65
- function verifyMetastatementAsIs(metastatementNode, derived, localMetaContext) {
90
+ function verifyMetastatementAsIs(metastatementNode, assignments, derived, localMetaContext) {
66
91
  let metastatementVerifiedAsIs = false;
67
92
 
68
- const judgementNode = judgementNodeQuery(metastatementNode);
93
+ const judgementNode = judgementNodeQuery(metastatementNode),
94
+ metaEqualityNode = metaEqualityNodeQuery(metastatementNode);
69
95
 
70
- if (judgementNode === null) {
96
+ if ((judgementNode === null) && (metaEqualityNode === null)) {
71
97
  const metastatementString = localMetaContext.nodeAsString(metastatementNode);
72
98
 
73
99
  localMetaContext.trace(`Verifying the '${metastatementString}' metastatement as is...`, metastatementNode);
@@ -5,6 +5,7 @@ import MetaproofStep from "../step/metaproof";
5
5
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
6
6
 
7
7
  import { nodeQuery } from "../utilities/query";
8
+ import { assignAssignment } from "../utilities/assignments";
8
9
 
9
10
  const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
10
11
  unqualifiedMetastatementNodeQuery = nodeQuery("/premise/unqualifiedMetastatement!");
@@ -22,6 +23,12 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
22
23
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
23
24
 
24
25
  if (unqualifiedMetastatementVerified) {
26
+ const assignmentAssigned = assignAssignment(assignments, localMetaContext);
27
+
28
+ premiseVerified = assignmentAssigned; ///
29
+ }
30
+
31
+ if (premiseVerified) {
25
32
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
26
33
  metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode),
27
34
  premise = Premise.fromMetastatementNode(metastatementNode);
@@ -30,10 +37,6 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
30
37
 
31
38
  localMetaContext.addMetaproofStep(metaproofStep);
32
39
 
33
- premiseVerified = true;
34
- }
35
-
36
- if (premiseVerified) {
37
40
  localMetaContext.debug(`...verified the '${premiseString}' premise.`, premiseNode);
38
41
  }
39
42
 
@@ -6,6 +6,7 @@ import LocalMetaContext from "../context/localMeta";
6
6
  import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
7
7
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
8
8
 
9
+ import { assignAssignment } from "../utilities/assignments";
9
10
  import { nodeQuery, nodesQuery } from "../utilities/query";
10
11
  import { RULE_SUBPROOF_RULE_NAME, QUALIFIED_METASTATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
11
12
 
@@ -89,11 +90,20 @@ function verifyChild(childNode, localMetaContext) {
89
90
  }
90
91
 
91
92
  case QUALIFIED_METASTATEMENT_RULE_NAME: {
93
+ let qualifiedMetastatementVerified;
94
+
92
95
  const derived = true,
93
96
  assignments = [],
94
97
  metavariableReferences = true,
95
- qualifiedMetastatementNode = childNode, ///
96
- qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metavariableReferences, assignments, derived, localMetaContext);
98
+ qualifiedMetastatementNode = childNode; ///
99
+
100
+ qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metavariableReferences, assignments, derived, localMetaContext);
101
+
102
+ if (qualifiedMetastatementVerified) {
103
+ const assignmentAssigned = assignAssignment(assignments, localMetaContext);
104
+
105
+ qualifiedMetastatementVerified = assignmentAssigned; ///
106
+ }
97
107
 
98
108
  if (qualifiedMetastatementVerified) {
99
109
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
@@ -108,10 +118,19 @@ function verifyChild(childNode, localMetaContext) {
108
118
  }
109
119
 
110
120
  case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
121
+ let unqualifiedMetastatementVerified;
122
+
111
123
  const derived = true,
112
- assignments = false,
113
- unqualifiedMetastatementNode = childNode, ///
114
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
124
+ assignments = [],
125
+ unqualifiedMetastatementNode = childNode; ///
126
+
127
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
128
+
129
+ if (unqualifiedMetastatementVerified) {
130
+ const assignmentAssigned = assignAssignment(assignments, localMetaContext);
131
+
132
+ unqualifiedMetastatementVerified = assignmentAssigned; ///
133
+ }
115
134
 
116
135
  if (unqualifiedMetastatementVerified) {
117
136
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),