occam-verify-cli 0.0.972 → 0.0.974

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 (65) hide show
  1. package/lib/context/file.js +1 -8
  2. package/lib/resolve/complexSubstitutionAgainstSimpleSubstitution.js +76 -0
  3. package/lib/resolve/substitution.js +27 -0
  4. package/lib/resolve/substitutions.js +8 -70
  5. package/lib/substitution/statementForMetavariable.js +2 -2
  6. package/lib/substitution.js +8 -1
  7. package/lib/substitutions.js +19 -7
  8. package/lib/type.js +3 -3
  9. package/lib/unify/complexSubstitutionStatementWithSimpleSubstitutionStatement.js +26 -0
  10. package/lib/unify/qualifiedStatement.js +117 -0
  11. package/lib/unify/statementWithCombinator.js +29 -0
  12. package/lib/unify/statementWithCombinators.js +4 -14
  13. package/lib/unify/termWithBracketedConstructor.js +3 -3
  14. package/lib/unify/termWithConstructor.js +37 -0
  15. package/lib/unify/termWithConstructors.js +6 -33
  16. package/lib/unify/unqualifiedStatement.js +25 -0
  17. package/lib/verifier/statementAsCombinator.js +2 -2
  18. package/lib/verify/assertion/contained.js +2 -2
  19. package/lib/verify/assertion/defined.js +5 -3
  20. package/lib/verify/assertion/type.js +5 -3
  21. package/lib/verify/conclusion.js +2 -2
  22. package/lib/verify/consequent.js +2 -2
  23. package/lib/verify/declaration.js +3 -3
  24. package/lib/verify/equality.js +11 -7
  25. package/lib/verify/frame.js +2 -2
  26. package/lib/verify/judgement.js +36 -28
  27. package/lib/verify/premise.js +3 -3
  28. package/lib/verify/statement/qualified.js +3 -3
  29. package/lib/verify/statement/unqualified.js +9 -53
  30. package/lib/verify/statement.js +8 -47
  31. package/lib/verify/term.js +11 -5
  32. package/package.json +1 -1
  33. package/src/context/file.js +0 -6
  34. package/src/resolve/complexSubstitutionAgainstSimpleSubstitution.js +94 -0
  35. package/src/resolve/substitution.js +19 -0
  36. package/src/resolve/substitutions.js +9 -112
  37. package/src/substitution/statementForMetavariable.js +1 -1
  38. package/src/substitution.js +6 -0
  39. package/src/substitutions.js +17 -6
  40. package/src/type.js +3 -3
  41. package/src/unify/complexSubstitutionStatementWithSimpleSubstitutionStatement.js +18 -0
  42. package/src/unify/{statement/qualified.js → qualifiedStatement.js} +1 -1
  43. package/src/unify/statementWithCombinator.js +22 -0
  44. package/src/unify/statementWithCombinators.js +3 -20
  45. package/src/unify/termWithBracketedConstructor.js +1 -1
  46. package/src/unify/termWithConstructor.js +39 -0
  47. package/src/unify/termWithConstructors.js +1 -37
  48. package/src/unify/{statement/unqualified.js → unqualifiedStatement.js} +1 -1
  49. package/src/verifier/statementAsCombinator.js +2 -2
  50. package/src/verify/assertion/contained.js +1 -1
  51. package/src/verify/assertion/defined.js +7 -2
  52. package/src/verify/assertion/type.js +6 -4
  53. package/src/verify/conclusion.js +1 -1
  54. package/src/verify/consequent.js +1 -1
  55. package/src/verify/declaration.js +2 -2
  56. package/src/verify/equality.js +12 -8
  57. package/src/verify/frame.js +1 -1
  58. package/src/verify/judgement.js +57 -49
  59. package/src/verify/premise.js +3 -3
  60. package/src/verify/statement/qualified.js +1 -1
  61. package/src/verify/statement/unqualified.js +8 -13
  62. package/src/verify/statement.js +3 -56
  63. package/src/verify/term.js +13 -6
  64. package/lib/unify/statement/qualified.js +0 -117
  65. package/lib/unify/statement/unqualified.js +0 -25
package/src/type.js CHANGED
@@ -105,10 +105,10 @@ export default class Type {
105
105
 
106
106
  matchTypeNode(typeNode) {
107
107
  const typeName = typeNameFromTypeNode(typeNode),
108
- matchesTypeName = this.matchTypeName(typeName),
109
- matchesTypeNode = matchesTypeName; ///
108
+ typeNameMatches = this.matchTypeName(typeName),
109
+ typeNodeMatches = typeNameMatches; ///
110
110
 
111
- return matchesTypeNode;
111
+ return typeNodeMatches;
112
112
  }
113
113
 
114
114
  asString(tokens, noSuperType = false) {
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import metaLevelUnifier from "../unifier/metaLevel";
4
+
5
+ export default function unifyComplexSubstitutionStatementWithSimpleSubstitutionStatement(complexSubstitutionStatementNode, simpleSubstitutionStatementNode, substitutions, localContextA, localContextB) {
6
+ let complexSubstitutionStatementWithSimpleSubstitutionStatement;
7
+
8
+ const nodeA = complexSubstitutionStatementNode, ///
9
+ nodeB = simpleSubstitutionStatementNode; ///
10
+
11
+ localContextA = localContextB; ///
12
+
13
+ const unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
14
+
15
+ complexSubstitutionStatementWithSimpleSubstitutionStatement = unified; ///
16
+
17
+ return complexSubstitutionStatementWithSimpleSubstitutionStatement;
18
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { nodeQuery } from "../../utilities/query";
3
+ import { nodeQuery } from "../utilities/query";
4
4
 
5
5
  const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
6
6
  metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
4
+
5
+ export default function unifyStatementWithCombinator(statementNode, combinator, assignments, stated, localContext) {
6
+ let statementUnifiedWithCombinator;
7
+
8
+ const statementString = localContext.nodeAsString(statementNode),
9
+ combinatorString = combinator.getString();
10
+
11
+ localContext.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`, statementNode);
12
+
13
+ const combinatorStatementNode = combinator.getStatementNode();
14
+
15
+ statementUnifiedWithCombinator = statementWithCombinatorUnifier.unify(statementNode, combinatorStatementNode, assignments, stated, localContext);
16
+
17
+ if (statementUnifiedWithCombinator) {
18
+ localContext.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`, statementNode);
19
+ }
20
+
21
+ return statementUnifiedWithCombinator;
22
+ }
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
3
+ import unifyStatementWithCombinator from "../unify/statementWithCombinator";
4
4
 
5
5
  export default function unifyStatementWithCombinators(statementNode, assignments, stated, localContext) {
6
6
  let statementUnifiedWithCombinators;
7
7
 
8
8
  const combinators = localContext.getCombinators();
9
9
 
10
+ assignments = null; ///
11
+
10
12
  statementUnifiedWithCombinators = combinators.some((combinator) => {
11
13
  const statementUnifiedWithCombinator = unifyStatementWithCombinator(statementNode, combinator, assignments, stated, localContext);
12
14
 
@@ -17,22 +19,3 @@ export default function unifyStatementWithCombinators(statementNode, assignments
17
19
 
18
20
  return statementUnifiedWithCombinators;
19
21
  }
20
-
21
- function unifyStatementWithCombinator(statementNode, combinator, assignments, stated, localContext) {
22
- let statementUnifiedWithCombinator;
23
-
24
- const statementString = localContext.nodeAsString(statementNode),
25
- combinatorString = combinator.getString();
26
-
27
- localContext.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`, statementNode);
28
-
29
- const combinatorStatementNode = combinator.getStatementNode();
30
-
31
- statementUnifiedWithCombinator = statementWithCombinatorUnifier.unify(statementNode, combinatorStatementNode, assignments, stated, localContext);
32
-
33
- if (statementUnifiedWithCombinator) {
34
- localContext.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`, statementNode);
35
- }
36
-
37
- return statementUnifiedWithCombinator;
38
- }
@@ -2,9 +2,9 @@
2
2
 
3
3
  import shim from "../shim";
4
4
  import bracketedConstructor from "../constructor/bracketed";
5
+ import unifyTermWithConstructor from "../unify/termWithConstructor";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
7
- import { unifyTermWithConstructor } from "../unify/termWithConstructors";
8
8
 
9
9
  const termNodeQuery = nodeQuery("/term/argument/term");
10
10
 
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ import Term from "../term";
4
+ import termWithConstructorUnifier from "../unifier/termWithConstructor";
5
+
6
+ export default function unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead) {
7
+ let termUnifiedWithConstructor = false;
8
+
9
+ const termString = localContext.nodeAsString(termNode),
10
+ constructorString = constructor.getString(),
11
+ constructorTermNode = constructor.getTermNode();
12
+
13
+ localContext.trace(`Unifying the '${termString}' term with the '${constructorString}' constructor...`, termNode);
14
+
15
+ const termNodeA = termNode, ///
16
+ constructorTermNodeB = constructorTermNode, ///
17
+ unified = termWithConstructorUnifier.unify(termNodeA, constructorTermNodeB, localContext);
18
+
19
+ if (unified) {
20
+ let verifiedAhead;
21
+
22
+ const type = constructor.getType(),
23
+ term = Term.fromTermNodeAndType(termNode, type);
24
+
25
+ terms.push(term);
26
+
27
+ verifiedAhead = verifyAhead();
28
+
29
+ terms.pop();
30
+
31
+ termUnifiedWithConstructor = verifiedAhead; ///
32
+ }
33
+
34
+ if (termUnifiedWithConstructor) {
35
+ localContext.debug(`...unified the '${termString}' term with the '${constructorString}' constructor.`, termNode);
36
+ }
37
+
38
+ return termUnifiedWithConstructor;
39
+ }
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import Term from "../term";
4
- import termWithConstructorUnifier from "../unifier/termWithConstructor";
3
+ import unifyTermWithConstructor from "../unify/termWithConstructor";
5
4
 
6
5
  import { nodeQuery } from "../utilities/query";
7
6
 
@@ -26,38 +25,3 @@ export default function unifyTermWithConstructors(termNode, terms, localContext,
26
25
 
27
26
  return termUnifiedWithConstructors;
28
27
  }
29
-
30
- export function unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead) {
31
- let termUnifiedWithConstructor = false;
32
-
33
- const termString = localContext.nodeAsString(termNode),
34
- constructorString = constructor.getString(),
35
- constructorTermNode = constructor.getTermNode();
36
-
37
- localContext.trace(`Unifying the '${termString}' term with the '${constructorString}' constructor...`, termNode);
38
-
39
- const termNodeA = termNode, ///
40
- constructorTermNodeB = constructorTermNode, ///
41
- unified = termWithConstructorUnifier.unify(termNodeA, constructorTermNodeB, localContext);
42
-
43
- if (unified) {
44
- let verifiedAhead;
45
-
46
- const type = constructor.getType(),
47
- term = Term.fromTermNodeAndType(termNode, type);
48
-
49
- terms.push(term);
50
-
51
- verifiedAhead = verifyAhead();
52
-
53
- terms.pop();
54
-
55
- termUnifiedWithConstructor = verifiedAhead; ///
56
- }
57
-
58
- if (termUnifiedWithConstructor) {
59
- localContext.debug(`...unified the '${termString}' term with the '${constructorString}' constructor.`, termNode);
60
- }
61
-
62
- return termUnifiedWithConstructor;
63
- }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { nodeQuery } from "../../utilities/query";
3
+ import { nodeQuery } from "../utilities/query";
4
4
 
5
5
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
6
6
 
@@ -29,8 +29,8 @@ class StatementAsCombinatorVerifier extends Verifier {
29
29
  nodeQuery: statementNodeQuery,
30
30
  verify: (statementNode, fileContext) => {
31
31
  const { verifyStatement } = shim,
32
- stated = false, ///
33
- assignments = [],
32
+ stated = false,
33
+ assignments = null,
34
34
  localContext = LocalContext.fromFileContext(fileContext),
35
35
  statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
36
36
 
@@ -23,7 +23,7 @@ export default function verifyContainedAssertion(containedAssertionNode, assignm
23
23
 
24
24
  localContext.trace(`Verifying the '${containedAssertionString}' contained assertion...`, containedAssertionNode);
25
25
 
26
- assignments = []; ///
26
+ assignments = null; ///
27
27
 
28
28
  stated = true; ///
29
29
 
@@ -18,14 +18,19 @@ const verifyDefinedAssertionFunctions = [
18
18
  export default function verifyDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
19
19
  let definedAssertionVerified;
20
20
 
21
- const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
21
+ const definedAssertionString = localContext.nodeAsString(definedAssertionNode),
22
+ savedStated = stated; ///;
22
23
 
23
24
  localContext.trace(`Verifying the '${definedAssertionString}' defined assertion...`, definedAssertionNode);
24
25
 
25
- assignments = []; ///
26
+ assignments = null; ///
27
+
28
+ stated = true; ///
26
29
 
27
30
  const verified = metaLevelVerifier.verify(definedAssertionNode, assignments, stated, localContext);
28
31
 
32
+ stated = savedStated; ///
33
+
29
34
  if (verified) {
30
35
  definedAssertionVerified = verifyDefinedAssertionFunctions.some((verifyDefinedAssertionFunction) => {
31
36
  const definedAssertionVerified = verifyDefinedAssertionFunction(definedAssertionNode, assignments, stated, localContext);
@@ -112,11 +112,13 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, stated, local
112
112
  const variableNode = variableNodeQuery(termNode);
113
113
 
114
114
  if (variableNode !== null) {
115
- const variable = Variable.fromVariableNodeAndType(variableNode, type),
116
- variableAssignment = VariableAssignment.fromVariable(variable),
117
- assignment = variableAssignment; ///
115
+ if (assignments !== null) {
116
+ const variable = Variable.fromVariableNodeAndType(variableNode, type),
117
+ variableAssignment = VariableAssignment.fromVariable(variable),
118
+ assignment = variableAssignment; ///
118
119
 
119
- assignments.push(assignment);
120
+ assignments.push(assignment);
121
+ }
120
122
  }
121
123
 
122
124
  verifiedAhead = true;
@@ -19,7 +19,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
19
19
 
20
20
  if (unqualifiedStatementNode !== null) {
21
21
  const stated = true,
22
- assignments = [],
22
+ assignments = null,
23
23
  statementNode = statementNodeQuery(unqualifiedStatementNode),
24
24
  statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
25
25
 
@@ -19,7 +19,7 @@ export default function verifyConsequent(consequentNode, consequents, localConte
19
19
 
20
20
  if (unqualifiedStatementNode !== null) {
21
21
  const stated = true,
22
- assignments = [],
22
+ assignments = null,
23
23
  statementNode = statementNodeQuery(unqualifiedStatementNode),
24
24
  statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
25
25
 
@@ -44,7 +44,7 @@ function verifyDerivedDeclaration(declarationNode, declarations, stated, localCo
44
44
 
45
45
  localContext.trace(`Verifying the '${declarationString}' derived declaration...`, declarationNode);
46
46
 
47
- debugger
47
+ derivedDeclarationVerified = false; ///
48
48
 
49
49
  if (derivedDeclarationVerified) {
50
50
  localContext.debug(`...verified the '${declarationString}' derived declaration.`, declarationNode);
@@ -68,7 +68,7 @@ function verifyStatedDeclaration(declarationNode, declarations, stated, localCon
68
68
  if (metavariableVerified) {
69
69
  const { verifyStatement } = shim,
70
70
  stated = true,
71
- assignments = [],
71
+ assignments = null,
72
72
  statementNode = statementNodeQuery(declarationNode),
73
73
  statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
74
74
 
@@ -41,7 +41,7 @@ function verifyDerivedEquality(equalityNode, assignments, stated, localContext)
41
41
  if (!stated) {
42
42
  const equalityString = localContext.nodeAsString(equalityNode);
43
43
 
44
- localContext.trace(`Verifying the '${equalityString}' stated equality...`, equalityNode);
44
+ localContext.trace(`Verifying the '${equalityString}' derived equality...`, equalityNode);
45
45
 
46
46
  const terms = [],
47
47
  termNodes = termNodesQuery(equalityNode),
@@ -54,10 +54,12 @@ function verifyDerivedEquality(equalityNode, assignments, stated, localContext)
54
54
  const equalityEqual = equality.isEqual(localContext);
55
55
 
56
56
  if (equalityEqual) {
57
- const equalityAssignment = EqualityAssignment.fromEquality(equality),
58
- assignment = equalityAssignment; ///
57
+ if (assignments !== null) {
58
+ const equalityAssignment = EqualityAssignment.fromEquality(equality),
59
+ assignment = equalityAssignment; ///
59
60
 
60
- assignments.push(assignment);
61
+ assignments.push(assignment);
62
+ }
61
63
 
62
64
  verifiedAhead = true;
63
65
  }
@@ -69,7 +71,7 @@ function verifyDerivedEquality(equalityNode, assignments, stated, localContext)
69
71
  derivedEqualityVerified = termsVerified; ///
70
72
 
71
73
  if (derivedEqualityVerified) {
72
- localContext.debug(`...verified the '${equalityString}' stated equality.`, equalityNode);
74
+ localContext.debug(`...verified the '${equalityString}' derived equality.`, equalityNode);
73
75
  }
74
76
  }
75
77
 
@@ -92,10 +94,12 @@ function verifyStatedEquality(equalityNode, assignments, stated, localContext) {
92
94
  const equality = Equality.fromTermsAndEqualityNode(terms, equalityNode);
93
95
 
94
96
  if (equality !== null) {
95
- const equalityAssignment = EqualityAssignment.fromEquality(equality),
96
- assignment = equalityAssignment; ///
97
+ if (assignments !== null) {
98
+ const equalityAssignment = EqualityAssignment.fromEquality(equality),
99
+ assignment = equalityAssignment; ///
97
100
 
98
- assignments.push(assignment);
101
+ assignments.push(assignment);
102
+ }
99
103
 
100
104
  verifiedAhead = true;
101
105
  }
@@ -45,7 +45,7 @@ function verifyDerivedFrame(frameNode, frames, stated, localContext) {
45
45
 
46
46
  localContext.trace(`Verifying the '${frameString}' derived frame...`, frameNode);
47
47
 
48
- debugger
48
+ derivedFrameVerified = false; ///
49
49
 
50
50
  if (derivedFrameVerified) {
51
51
  localContext.debug(`...verified the '${frameString}' derived frame.`, frameNode);
@@ -46,49 +46,52 @@ function verifyDerivedJudgement(judgementNode, assignments, stated, localContext
46
46
 
47
47
  localContext.trace(`Verifying the '${judgementString}' derived judgement...`, judgementNode);
48
48
 
49
- const metavariableNode = metavariableNodeQuery(judgementNode),
50
- metavariableVerified = verifyMetavariable(metavariableNode, localContext);
49
+ const metavariableNode = metavariableNodeQuery(judgementNode);
51
50
 
52
- if (metavariableVerified) {
53
- const judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
51
+ if (metavariableNode !== null) {
52
+ const metavariableVerified = verifyMetavariable(metavariableNode, localContext);
54
53
 
55
- if (judgement !== null) {
56
- const frames = [],
57
- frameNode = frameNodeQuery(judgementNode),
58
- frameVerified = verifyFrame(frameNode, frames, assignments, stated, localContext);
54
+ if (metavariableVerified) {
55
+ const judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
59
56
 
60
- if (frameVerified) {
61
- const firstFrame = first(frames),
62
- frame = firstFrame, ///
63
- frameSingular = frame.isSingular();
64
-
65
- if (frameSingular) {
66
- const declaration = frame.getDeclaration(),
67
- metavariableNode = declaration.getMetavariableNode(),
68
- metaLemma = localContext.findMetaLemmaByMetavariableNode(metavariableNode),
69
- metatheorem = localContext.findMetatheoremByMetavariableNode(metavariableNode),
70
- metaLemmaMetatheorem = (metaLemma || metatheorem); ///
71
-
72
- if (metaLemmaMetatheorem !== null) {
73
- const metaLemmaMetatheoremUnifiedWithDeclaration = declaration.unifyMetaLemmaOrMetaTheorem(metaLemmaMetatheorem),
74
- metaLemmaMetatheoremUnifiedWithJudgement = judgement.unifyMetaLemmaOrMetaTheorem(metaLemmaMetatheorem);
75
-
76
- derivedJudgementVerified = (metaLemmaMetatheoremUnifiedWithDeclaration && metaLemmaMetatheoremUnifiedWithJudgement);
57
+ if (judgement !== null) {
58
+ const frames = [],
59
+ frameNode = frameNodeQuery(judgementNode),
60
+ frameVerified = verifyFrame(frameNode, frames, stated, localContext);
61
+
62
+ if (frameVerified) {
63
+ const firstFrame = first(frames),
64
+ frame = firstFrame, ///
65
+ frameSingular = frame.isSingular();
66
+
67
+ if (frameSingular) {
68
+ const declaration = frame.getDeclaration(),
69
+ metavariableNode = declaration.getMetavariableNode(),
70
+ metaLemma = localContext.findMetaLemmaByMetavariableNode(metavariableNode),
71
+ metatheorem = localContext.findMetatheoremByMetavariableNode(metavariableNode),
72
+ metaLemmaMetatheorem = (metaLemma || metatheorem); ///
73
+
74
+ if (metaLemmaMetatheorem !== null) {
75
+ const metaLemmaMetatheoremUnifiedWithDeclaration = declaration.unifyMetaLemmaOrMetaTheorem(metaLemmaMetatheorem),
76
+ metaLemmaMetatheoremUnifiedWithJudgement = judgement.unifyMetaLemmaOrMetaTheorem(metaLemmaMetatheorem);
77
+
78
+ derivedJudgementVerified = (metaLemmaMetatheoremUnifiedWithDeclaration && metaLemmaMetatheoremUnifiedWithJudgement);
79
+ } else {
80
+ const metavariableString = localContext.nodeAsString(metavariableNode);
81
+
82
+ localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, judgementNode);
83
+ }
77
84
  } else {
78
- const metavariableString = localContext.nodeAsString(metavariableNode);
85
+ const frameString = localContext.nodeAsString(frameNode);
79
86
 
80
- localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, judgementNode);
87
+ localContext.debug(`The '${frameString}' is not singular.`, judgementNode);
81
88
  }
82
- } else {
83
- const frameString = localContext.nodeAsString(frameNode);
84
-
85
- localContext.debug(`The '${frameString}' is not singular.`, judgementNode);
86
89
  }
87
- }
88
- } else {
89
- const metavariableString = localContext.nodeAsString(metavariableNode);
90
+ } else {
91
+ const metavariableString = localContext.nodeAsString(metavariableNode);
90
92
 
91
- localContext.debug(`There is no judgement present for the '${metavariableString}' metavariable.`, judgementNode);
93
+ localContext.debug(`There is no judgement present for the '${metavariableString}' metavariable.`, judgementNode);
94
+ }
92
95
  }
93
96
  }
94
97
 
@@ -108,24 +111,29 @@ function verifyStatedJudgement(judgementNode, assignments, stated, localContext)
108
111
 
109
112
  localContext.trace(`Verifying the '${judgementString}' stated judgement...`, judgementNode);
110
113
 
111
- const metavariableNode = metavariableNodeQuery(judgementNode),
112
- metavariableVerified = verifyMetavariable(metavariableNode, localContext);
114
+ const metavariableNode = metavariableNodeQuery(judgementNode);
113
115
 
114
- if (metavariableVerified) {
115
- const frames = [],
116
- frameNode = frameNodeQuery(judgementNode),
117
- frameVerified = verifyFrame(frameNode, frames, stated, localContext);
116
+ if (metavariableNode !== null) {
117
+ const metavariableVerified = verifyMetavariable(metavariableNode, localContext);
118
118
 
119
- if (frameVerified) {
120
- const firstFrame = first(frames),
121
- frame = firstFrame, ///
122
- judgement = Judgement.fromJudgementNodeFrameAndMetavariableNode(judgementNode, frame, metavariableNode),
123
- judgementAssignment = JudgementAssignment.fromJudgement(judgement),
124
- assignment = judgementAssignment;
119
+ if (metavariableVerified) {
120
+ const frames = [],
121
+ frameNode = frameNodeQuery(judgementNode),
122
+ frameVerified = verifyFrame(frameNode, frames, stated, localContext);
125
123
 
126
- assignments.push(assignment);
124
+ if (frameVerified) {
125
+ if (assignments !== null) {
126
+ const firstFrame = first(frames),
127
+ frame = firstFrame, ///
128
+ judgement = Judgement.fromJudgementNodeFrameAndMetavariableNode(judgementNode, frame, metavariableNode),
129
+ judgementAssignment = JudgementAssignment.fromJudgement(judgement),
130
+ assignment = judgementAssignment;
131
+
132
+ assignments.push(assignment);
133
+ }
127
134
 
128
- statedJudgementVerified = true;
135
+ statedJudgementVerified = true;
136
+ }
129
137
  }
130
138
  }
131
139
 
@@ -29,12 +29,12 @@ export default function verifyPremise(premiseNode, premises, localContext) {
29
29
  const assignmentsAssigned = assignAssignments(assignments, localContext);
30
30
 
31
31
  if (assignmentsAssigned) {
32
- const metaproofStep = ProofStep.fromStatementNode(statementNode),
33
- premise = Premise.fromStatementNode(statementNode);
32
+ const premise = Premise.fromStatementNode(statementNode),
33
+ proofStep = ProofStep.fromStatementNode(statementNode);
34
34
 
35
35
  premises.push(premise);
36
36
 
37
- localContext.addProofStep(metaproofStep);
37
+ localContext.addProofStep(proofStep);
38
38
 
39
39
  premiseVerified = true;
40
40
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
- import unifyQualifiedStatement from "../../unify/statement/qualified";
4
+ import unifyQualifiedStatement from "../../unify/qualifiedStatement";
5
5
 
6
6
  import { nodeQuery } from "../../utilities/query";
7
7
  import { assignAssignments } from "../../utilities/assignments";
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
- import unifyUnqualifiedStatement from "../../unify/statement/unqualified";
4
+ import unifyUnqualifiedStatement from "../../unify/unqualifiedStatement";
5
5
 
6
6
  import { nodeQuery } from "../../utilities/query";
7
7
  import { assignAssignments } from "../../utilities/assignments";
8
- import { verifyStatementTrivially } from "../../verify/statement";
9
8
 
10
9
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
11
10
 
@@ -17,32 +16,28 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, loc
17
16
  localContext.trace(`Verifying the '${unqualifiedStatementString}' unqualified statement...`, unqualifiedStatementNode);
18
17
 
19
18
  if (!unqualifiedStatementVerified) {
20
- const stated = true,
19
+ const stated = false,
21
20
  assignments = [],
22
21
  statementNode = statementNodeQuery(unqualifiedStatementNode),
23
22
  statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
24
23
 
25
24
  if (statementVerified) {
26
- const unqualifiedStatementUnified = unifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
25
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
27
26
 
28
- unqualifiedStatementVerified = unqualifiedStatementUnified; ///
27
+ unqualifiedStatementVerified = assignmentsAssigned; ///
29
28
  }
30
29
  }
31
30
 
32
31
  if (!unqualifiedStatementVerified) {
33
- const stated = false,
34
- assignments = [],
32
+ const stated = true,
33
+ assignments = null,
35
34
  statementNode = statementNodeQuery(unqualifiedStatementNode),
36
35
  statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
37
36
 
38
37
  if (statementVerified) {
39
- const statementVerifiedTrivially = verifyStatementTrivially(statementNode, localContext);
40
-
41
- if (statementVerifiedTrivially) {
42
- const assignmentsAssigned = assignAssignments(assignments, localContext);
38
+ const unqualifiedStatementUnified = unifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
43
39
 
44
- unqualifiedStatementVerified = assignmentsAssigned; ///
45
- }
40
+ unqualifiedStatementVerified = unqualifiedStatementUnified; ///
46
41
  }
47
42
  }
48
43