occam-verify-cli 0.0.965 → 0.0.967

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.
@@ -112,13 +112,8 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
112
112
  const variableNode = variableNodeQuery(termNode);
113
113
 
114
114
  if (variableNode !== null) {
115
- let variable;
116
-
117
- variable = localContext.findVariableByVariableNode(variableNode);
118
-
119
- variable = Variable.fromVariableAndType(variable, type); ///
120
-
121
- const variableAssignment = VariableAssignment.fromVariable(variable),
115
+ const variable = Variable.fromVariableNodeAndType(variableNode, type),
116
+ variableAssignment = VariableAssignment.fromVariable(variable),
122
117
  assignment = variableAssignment; ///
123
118
 
124
119
  assignments.push(assignment);
@@ -54,6 +54,11 @@ function verifyDerivedEquality(equalityNode, assignments, derived, localContext)
54
54
  const equalityEqual = equality.isEqual(localContext);
55
55
 
56
56
  if (equalityEqual) {
57
+ const equalityAssignment = EqualityAssignment.fromEquality(equality),
58
+ assignment = equalityAssignment; ///
59
+
60
+ assignments.push(assignment);
61
+
57
62
  verifiedAhead = true;
58
63
  }
59
64
  }
@@ -7,6 +7,7 @@ import verifyQualifiedStatement from "../verify/statement/qualified";
7
7
  import verifyUnqualifiedStatement from "../verify/statement/unqualified";
8
8
 
9
9
  import { nodeQuery } from "../utilities/query";
10
+ import { assignAssignments } from "../utilities/assignments";
10
11
 
11
12
  const subproofNodeQuery = nodeQuery("/proofStep|lastProofStep/subproof!"),
12
13
  statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/statement!"),
@@ -31,26 +32,35 @@ export default function verifyProofStep(proofStepNode, substitutions, localConte
31
32
  proofStep = ProofStep.fromSubproofNode(subproofNode);
32
33
  }
33
34
  } else {
34
- const derived = true,
35
- assignments = null;
36
-
37
35
  if (qualifiedStatementNode !== null) {
38
- const qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext);
36
+ const derived = false, ///
37
+ assignments = [],
38
+ qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext);
39
39
 
40
40
  if (qualifiedStatementVerified) {
41
- const statementNode = statementNodeQuery(qualifiedStatementNode);
41
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
42
+
43
+ if (assignmentsAssigned) {
44
+ const statementNode = statementNodeQuery(qualifiedStatementNode);
42
45
 
43
- proofStep = ProofStep.fromStatementNode(statementNode);
46
+ proofStep = ProofStep.fromStatementNode(statementNode);
47
+ }
44
48
  }
45
49
  }
46
50
 
47
51
  if (unqualifiedStatementNode !== null) {
48
- const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
52
+ const derived = true,
53
+ assignments = [],
54
+ unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
49
55
 
50
56
  if (unqualifiedStatementVerified) {
51
- const statementNode = statementNodeQuery(unqualifiedStatementNode);
57
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
58
+
59
+ if (assignmentsAssigned) {
60
+ const statementNode = statementNodeQuery(unqualifiedStatementNode);
52
61
 
53
- proofStep = ProofStep.fromStatementNode(statementNode);
62
+ proofStep = ProofStep.fromStatementNode(statementNode);
63
+ }
54
64
  }
55
65
  }
56
66
  }
@@ -7,12 +7,6 @@ import { nodeQuery } from "../../utilities/query";
7
7
  const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
8
8
  metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
9
9
 
10
- const equalityNodeQuery = nodeQuery("/statement/equality!"),
11
- judgementNodeQuery = nodeQuery("/statement/judgement!"),
12
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
13
- definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
14
- containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
15
-
16
10
  const unifyDerivedQualifiedStatementFunctions = [
17
11
  unifyDerivedQualifiedStatementAWithRule,
18
12
  unifyDerivedQualifiedStatementAWithAxiom,
@@ -33,13 +27,9 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
33
27
  statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
34
28
 
35
29
  if (statementVerified) {
36
- if (derived) {
37
- const derivedQualifiedStatementVerified = verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
30
+ const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
38
31
 
39
- qualifiedStatementVerified = derivedQualifiedStatementVerified; ///
40
- } else {
41
- qualifiedStatementVerified = true;
42
- }
32
+ qualifiedStatementVerified = derivedQualifiedStatementUnified; ///
43
33
  }
44
34
 
45
35
  if (qualifiedStatementVerified) {
@@ -49,56 +39,24 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
49
39
  return qualifiedStatementVerified;
50
40
  }
51
41
 
52
- function verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
53
- let derivedQualifiedStatementVerified = false;
42
+ function unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
43
+ let derivedQualifiedStatementUnified;
54
44
 
55
45
  const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
56
46
 
57
- localContext.trace(`Verifying the '${qualifiedStatementString}' derived qualified statement...`, qualifiedStatementNode);
58
-
59
- if (!derivedQualifiedStatementVerified) {
60
- const derivedQualifiedStatementVerifiedTrivially = verifyDerivedQualifiedStatementATrivially(qualifiedStatementNode, substitutions, localContext);
61
-
62
- derivedQualifiedStatementVerified = derivedQualifiedStatementVerifiedTrivially; ///
63
- }
64
-
65
- if (!derivedQualifiedStatementVerified) {
66
- const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
67
- const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
47
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement...`, qualifiedStatementNode);
68
48
 
69
- return derivedQualifiedStatementUnified;
70
- });
49
+ derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
50
+ const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
71
51
 
72
- derivedQualifiedStatementVerified = derivedQualifiedStatementUnified; ///
73
- }
74
-
75
- if (derivedQualifiedStatementVerified) {
76
- localContext.debug(`...verified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
77
- }
78
-
79
- return derivedQualifiedStatementVerified;
80
- }
52
+ return derivedQualifiedStatementUnified;
53
+ });
81
54
 
82
- function verifyDerivedQualifiedStatementATrivially(qualifiedStatementNode, substitutions, localContext) {
83
- let derivedQualifiedStatementVerifiedTrivially = false;
84
-
85
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode);
86
-
87
- if (metavariableNode === null) {
88
- const statementNode = statementNodeQuery(qualifiedStatementNode),
89
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
90
-
91
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement trivially...`, qualifiedStatementNode);
92
-
93
- debugger
94
-
95
-
96
- if (derivedQualifiedStatementVerifiedTrivially) {
97
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement trivially.`, qualifiedStatementNode);
98
- }
55
+ if (derivedQualifiedStatementUnified) {
56
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
99
57
  }
100
58
 
101
- return derivedQualifiedStatementVerifiedTrivially;
59
+ return derivedQualifiedStatementUnified;
102
60
  }
103
61
 
104
62
  function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
@@ -3,6 +3,7 @@
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
+ import { verifyStatementTrivially } from "../../verify/statement";
6
7
 
7
8
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
8
9
 
@@ -18,9 +19,15 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
18
19
 
19
20
  if (statementVerified) {
20
21
  if (derived) {
21
- const derivedUnqualifiedStatementVerified = verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
22
+ const statementVerifiedTrivially = verifyStatementTrivially(statementNode, localContext);
22
23
 
23
- unqualifiedStatementVerified = derivedUnqualifiedStatementVerified; ///
24
+ if (statementVerifiedTrivially) {
25
+ unqualifiedStatementVerified = true;
26
+ } else {
27
+ const derivedUnqualifiedStatementUnified = unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
28
+
29
+ unqualifiedStatementVerified = derivedUnqualifiedStatementUnified; ///
30
+ }
24
31
  } else {
25
32
  unqualifiedStatementVerified = true;
26
33
  }
@@ -33,21 +40,21 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
33
40
  return unqualifiedStatementVerified;
34
41
  }
35
42
 
36
- function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
37
- let derivedUnqualifiedStatementVerified;
43
+ function unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
44
+ let derivedUnqualifiedStatementUnified;
38
45
 
39
46
  const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
40
47
 
41
- localContext.trace(`Verifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
48
+ localContext.trace(`Unifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
42
49
 
43
50
  const statementNode = statementNodeQuery(unqualifiedStatementNode),
44
51
  statementUnified = localContext.unifyStatement(statementNode, localContext);
45
52
 
46
- derivedUnqualifiedStatementVerified = statementUnified; ///
53
+ derivedUnqualifiedStatementUnified = statementUnified; ///
47
54
 
48
- if (derivedUnqualifiedStatementVerified) {
49
- localContext.debug(`...verified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
55
+ if (derivedUnqualifiedStatementUnified) {
56
+ localContext.debug(`...unified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
50
57
  }
51
58
 
52
- return derivedUnqualifiedStatementVerified;
59
+ return derivedUnqualifiedStatementUnified;
53
60
  }
@@ -89,6 +89,30 @@ Object.assign(shim, {
89
89
 
90
90
  export default verifyStatement;
91
91
 
92
+ export function verifyStatementTrivially(statementNode, localContext) {
93
+ let statementVerifiedTrivially = false;
94
+
95
+ const statementString = localContext.nodeAsString(statementNode);
96
+
97
+ localContext.trace(`Verifying the '${statementString}' statement trivially...`, statementNode);
98
+
99
+ const equalityNode = equalityNodeQuery(statementNode),
100
+ judgementNode = judgementNodeQuery(statementNode),
101
+ typeAssertionNode = typeAssertionNodeQuery(statementNode),
102
+ definedAssertionNode = definedAssertionNodeQuery(statementNode),
103
+ containedAssertionNode = containedAssertionNodeQuery(statementNode);
104
+
105
+ if ((equalityNode !== null) || (judgementNode !== null) || (typeAssertionNode !== null) || (definedAssertionNode !== null) || (containedAssertionNode !== null)) {
106
+ statementVerifiedTrivially = true;
107
+ }
108
+
109
+ if (statementVerifiedTrivially) {
110
+ localContext.debug(`...verified the '${statementString}' statement trivially.`, statementNode);
111
+ }
112
+
113
+ return statementVerifiedTrivially;
114
+ }
115
+
92
116
  function verifyStatementAsMetavariable(statementNode, assignments, derived, localContext) {
93
117
  let statementVerifiedAsMetavariable = false;
94
118