occam-verify-cli 1.0.984 → 1.0.985
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/lib/action/verify.js +22 -27
- package/lib/constants.js +1 -41
- package/lib/index.js +1 -2
- package/lib/utilities/fileContext.js +3 -8
- package/lib/utilities/releaseContext.js +2 -2
- package/package.json +5 -6
- package/src/action/verify.js +8 -18
- package/src/constants.js +0 -10
- package/src/index.js +0 -2
- package/src/utilities/fileContext.js +1 -2
- package/src/utilities/releaseContext.js +1 -1
- package/lib/context/aphasic.js +0 -27
- package/lib/context/bounded.js +0 -244
- package/lib/context/branching.js +0 -61
- package/lib/context/file/nominal.js +0 -586
- package/lib/context/illative.js +0 -28
- package/lib/context/liminal.js +0 -200
- package/lib/context/literal.js +0 -44
- package/lib/context/mnemic.js +0 -454
- package/lib/context/nested.js +0 -31
- package/lib/context/nominal.js +0 -57
- package/lib/context/phaneric.js +0 -44
- package/lib/context/thetic.js +0 -28
- package/lib/context.js +0 -445
- package/lib/element/assertion/contained.js +0 -218
- package/lib/element/assertion/defined.js +0 -213
- package/lib/element/assertion/property.js +0 -176
- package/lib/element/assertion/signature.js +0 -170
- package/lib/element/assertion/subproof.js +0 -220
- package/lib/element/assertion/type.js +0 -227
- package/lib/element/assertion.js +0 -49
- package/lib/element/assumption/metaLevel.js +0 -244
- package/lib/element/assumption.js +0 -252
- package/lib/element/combinator/bracketed.js +0 -36
- package/lib/element/combinator.js +0 -104
- package/lib/element/conclusion.js +0 -131
- package/lib/element/constructor/bracketed.js +0 -57
- package/lib/element/constructor.js +0 -129
- package/lib/element/declaration/combinator.js +0 -58
- package/lib/element/declaration/complexType.js +0 -180
- package/lib/element/declaration/constructor.js +0 -93
- package/lib/element/declaration/metavariable.js +0 -77
- package/lib/element/declaration/property.js +0 -88
- package/lib/element/declaration/simpleType.js +0 -148
- package/lib/element/declaration/typePrefix.js +0 -53
- package/lib/element/declaration/variable.js +0 -99
- package/lib/element/declaration.js +0 -15
- package/lib/element/deduction.js +0 -131
- package/lib/element/derivation.js +0 -46
- package/lib/element/equality.js +0 -211
- package/lib/element/equivalence.js +0 -200
- package/lib/element/error.js +0 -27
- package/lib/element/frame.js +0 -238
- package/lib/element/hypothesis.js +0 -135
- package/lib/element/judgement.js +0 -212
- package/lib/element/label.js +0 -135
- package/lib/element/metaType.js +0 -57
- package/lib/element/metavariable.js +0 -452
- package/lib/element/parameter.js +0 -69
- package/lib/element/procedureCall.js +0 -116
- package/lib/element/procedureReference.js +0 -56
- package/lib/element/proof.js +0 -52
- package/lib/element/proofAssertion/premise.js +0 -238
- package/lib/element/proofAssertion/step.js +0 -235
- package/lib/element/proofAssertion/supposition.js +0 -249
- package/lib/element/proofAssertion.js +0 -56
- package/lib/element/property.js +0 -176
- package/lib/element/propertyRelation.js +0 -132
- package/lib/element/reference.js +0 -227
- package/lib/element/rule.js +0 -242
- package/lib/element/section.js +0 -64
- package/lib/element/signature.js +0 -195
- package/lib/element/statement.js +0 -228
- package/lib/element/subDerivation.js +0 -46
- package/lib/element/subproof.js +0 -91
- package/lib/element/substitution/frame.js +0 -256
- package/lib/element/substitution/reference.js +0 -192
- package/lib/element/substitution/statement.js +0 -294
- package/lib/element/substitution/term.js +0 -266
- package/lib/element/substitution.js +0 -183
- package/lib/element/term.js +0 -217
- package/lib/element/topLevelAssertion/axiom.js +0 -158
- package/lib/element/topLevelAssertion/conjecture.js +0 -42
- package/lib/element/topLevelAssertion/lemma.js +0 -39
- package/lib/element/topLevelAssertion/theorem.js +0 -42
- package/lib/element/topLevelAssertion.js +0 -286
- package/lib/element/topLevelMetaAssertion/metaLemma.js +0 -42
- package/lib/element/topLevelMetaAssertion/metatheorem.js +0 -42
- package/lib/element/topLevelMetaAssertion.js +0 -179
- package/lib/element/type.js +0 -240
- package/lib/element/typePrefix.js +0 -85
- package/lib/element/variable.js +0 -206
- package/lib/elements.js +0 -27
- package/lib/metaTypeNames.js +0 -26
- package/lib/metaTypes.js +0 -66
- package/lib/node/argument.js +0 -31
- package/lib/node/assertion/contained.js +0 -51
- package/lib/node/assertion/defined.js +0 -47
- package/lib/node/assertion/property.js +0 -36
- package/lib/node/assertion/signature.js +0 -32
- package/lib/node/assertion/subproof.js +0 -28
- package/lib/node/assertion/type.js +0 -32
- package/lib/node/assertion.js +0 -18
- package/lib/node/assumption/metaLevel.js +0 -27
- package/lib/node/assumption.js +0 -27
- package/lib/node/body/axiom.js +0 -23
- package/lib/node/body/conjecture.js +0 -23
- package/lib/node/body/lemma.js +0 -23
- package/lib/node/body/metaLemma.js +0 -23
- package/lib/node/body/metatheorem.js +0 -23
- package/lib/node/body/rule.js +0 -44
- package/lib/node/body/theorem.js +0 -23
- package/lib/node/body.js +0 -31
- package/lib/node/combinator.js +0 -23
- package/lib/node/conclusion.js +0 -27
- package/lib/node/constructor.js +0 -23
- package/lib/node/declaration/combinator.js +0 -28
- package/lib/node/declaration/complexType.js +0 -72
- package/lib/node/declaration/constructor.js +0 -47
- package/lib/node/declaration/metavariable.js +0 -36
- package/lib/node/declaration/property.js +0 -44
- package/lib/node/declaration/simpleType.js +0 -72
- package/lib/node/declaration/typePrefix.js +0 -32
- package/lib/node/declaration/variable.js +0 -51
- package/lib/node/declaration.js +0 -18
- package/lib/node/deduction.js +0 -27
- package/lib/node/derivation.js +0 -26
- package/lib/node/document.js +0 -18
- package/lib/node/equality.js +0 -33
- package/lib/node/equivalence.js +0 -23
- package/lib/node/equivalences.js +0 -18
- package/lib/node/error.js +0 -18
- package/lib/node/frame.js +0 -38
- package/lib/node/header/axiom.js +0 -28
- package/lib/node/header/conjecture.js +0 -23
- package/lib/node/header/lemma.js +0 -23
- package/lib/node/header/metaLemma.js +0 -23
- package/lib/node/header/metatheorem.js +0 -23
- package/lib/node/header/rule.js +0 -23
- package/lib/node/header/theorem.js +0 -23
- package/lib/node/header.js +0 -47
- package/lib/node/hypothesis.js +0 -27
- package/lib/node/judgement.js +0 -31
- package/lib/node/label.js +0 -23
- package/lib/node/labels.js +0 -23
- package/lib/node/metaArgument.js +0 -23
- package/lib/node/metaType.js +0 -30
- package/lib/node/metavariable.js +0 -39
- package/lib/node/parameter.js +0 -47
- package/lib/node/parenthesisedLabel.js +0 -23
- package/lib/node/parenthesisedLabels.js +0 -27
- package/lib/node/placeholder.js +0 -18
- package/lib/node/procedureCall.js +0 -31
- package/lib/node/procedureReference.js +0 -30
- package/lib/node/proof.js +0 -23
- package/lib/node/proofAssertion/premise.js +0 -28
- package/lib/node/proofAssertion/step.js +0 -52
- package/lib/node/proofAssertion/supposition.js +0 -28
- package/lib/node/proofAssertion.js +0 -27
- package/lib/node/property.js +0 -30
- package/lib/node/propertyRelation.js +0 -31
- package/lib/node/qualification.js +0 -27
- package/lib/node/reference.js +0 -23
- package/lib/node/rule.js +0 -43
- package/lib/node/section.js +0 -39
- package/lib/node/signature.js +0 -23
- package/lib/node/statement.js +0 -103
- package/lib/node/subDerivation.js +0 -26
- package/lib/node/subproof.js +0 -35
- package/lib/node/substitution/frame.js +0 -40
- package/lib/node/substitution/reference.js +0 -40
- package/lib/node/substitution/statement.js +0 -60
- package/lib/node/substitution/term.js +0 -40
- package/lib/node/substitution.js +0 -18
- package/lib/node/term.js +0 -60
- package/lib/node/topLevelAssertion/axiom.js +0 -26
- package/lib/node/topLevelAssertion/conjecture.js +0 -26
- package/lib/node/topLevelAssertion/lemma.js +0 -26
- package/lib/node/topLevelAssertion/theorem.js +0 -26
- package/lib/node/topLevelAssertion.js +0 -46
- package/lib/node/topLevelMetaAssertion/metaLemma.js +0 -26
- package/lib/node/topLevelMetaAssertion/metatheorem.js +0 -26
- package/lib/node/topLevelMetaAssertion.js +0 -42
- package/lib/node/type.js +0 -60
- package/lib/node/typePrefix.js +0 -30
- package/lib/node/types.js +0 -23
- package/lib/node/variable.js +0 -30
- package/lib/nominal/lexer.js +0 -15
- package/lib/nominal/parser.js +0 -24
- package/lib/nonTerminalNodeMap.js +0 -189
- package/lib/pass/zip.js +0 -23
- package/lib/preamble.js +0 -73
- package/lib/process/assign.js +0 -62
- package/lib/process/discharge.js +0 -38
- package/lib/process/equate.js +0 -73
- package/lib/process/instantiate.js +0 -261
- package/lib/process/unification.js +0 -228
- package/lib/process/unify.js +0 -336
- package/lib/process/validate.js +0 -135
- package/lib/process/validation.js +0 -291
- package/lib/process/verify.js +0 -205
- package/lib/ruleNames.js +0 -350
- package/lib/tokenTypes.js +0 -22
- package/lib/utilities/assignment.js +0 -47
- package/lib/utilities/bnf.js +0 -21
- package/lib/utilities/brackets.js +0 -77
- package/lib/utilities/breakPoint.js +0 -38
- package/lib/utilities/context.js +0 -220
- package/lib/utilities/element.js +0 -1851
- package/lib/utilities/equivalence.js +0 -27
- package/lib/utilities/equivalences.js +0 -134
- package/lib/utilities/instance.js +0 -44
- package/lib/utilities/json.js +0 -1109
- package/lib/utilities/string.js +0 -231
- package/lib/utilities/substitutions.js +0 -86
- package/lib/utilities/synoptic.js +0 -159
- package/lib/utilities/type.js +0 -27
- package/src/context/aphasic.js +0 -15
- package/src/context/bounded.js +0 -362
- package/src/context/branching.js +0 -69
- package/src/context/file/nominal.js +0 -955
- package/src/context/illative.js +0 -17
- package/src/context/liminal.js +0 -280
- package/src/context/literal.js +0 -42
- package/src/context/mnemic.js +0 -778
- package/src/context/nested.js +0 -21
- package/src/context/nominal.js +0 -62
- package/src/context/phaneric.js +0 -43
- package/src/context/thetic.js +0 -17
- package/src/context.js +0 -722
- package/src/element/assertion/contained.js +0 -313
- package/src/element/assertion/defined.js +0 -310
- package/src/element/assertion/property.js +0 -252
- package/src/element/assertion/signature.js +0 -239
- package/src/element/assertion/subproof.js +0 -335
- package/src/element/assertion/type.js +0 -328
- package/src/element/assertion.js +0 -65
- package/src/element/assumption/metaLevel.js +0 -373
- package/src/element/assumption.js +0 -374
- package/src/element/combinator/bracketed.js +0 -32
- package/src/element/combinator.js +0 -145
- package/src/element/conclusion.js +0 -185
- package/src/element/constructor/bracketed.js +0 -68
- package/src/element/constructor.js +0 -188
- package/src/element/declaration/combinator.js +0 -66
- package/src/element/declaration/complexType.js +0 -257
- package/src/element/declaration/constructor.js +0 -122
- package/src/element/declaration/metavariable.js +0 -93
- package/src/element/declaration/property.js +0 -108
- package/src/element/declaration/simpleType.js +0 -208
- package/src/element/declaration/typePrefix.js +0 -58
- package/src/element/declaration/variable.js +0 -130
- package/src/element/declaration.js +0 -7
- package/src/element/deduction.js +0 -185
- package/src/element/derivation.js +0 -57
- package/src/element/equality.js +0 -325
- package/src/element/equivalence.js +0 -276
- package/src/element/error.js +0 -26
- package/src/element/frame.js +0 -356
- package/src/element/hypothesis.js +0 -186
- package/src/element/judgement.js +0 -303
- package/src/element/label.js +0 -186
- package/src/element/metaType.js +0 -75
- package/src/element/metavariable.js +0 -662
- package/src/element/parameter.js +0 -90
- package/src/element/procedureCall.js +0 -159
- package/src/element/procedureReference.js +0 -71
- package/src/element/proof.js +0 -61
- package/src/element/proofAssertion/premise.js +0 -354
- package/src/element/proofAssertion/step.js +0 -271
- package/src/element/proofAssertion/supposition.js +0 -377
- package/src/element/proofAssertion.js +0 -74
- package/src/element/property.js +0 -258
- package/src/element/propertyRelation.js +0 -193
- package/src/element/reference.js +0 -345
- package/src/element/rule.js +0 -358
- package/src/element/section.js +0 -78
- package/src/element/signature.js +0 -292
- package/src/element/statement.js +0 -358
- package/src/element/subDerivation.js +0 -56
- package/src/element/subproof.js +0 -116
- package/src/element/substitution/frame.js +0 -392
- package/src/element/substitution/reference.js +0 -274
- package/src/element/substitution/statement.js +0 -452
- package/src/element/substitution/term.js +0 -407
- package/src/element/substitution.js +0 -261
- package/src/element/term.js +0 -339
- package/src/element/topLevelAssertion/axiom.js +0 -244
- package/src/element/topLevelAssertion/conjecture.js +0 -40
- package/src/element/topLevelAssertion/lemma.js +0 -42
- package/src/element/topLevelAssertion/theorem.js +0 -40
- package/src/element/topLevelAssertion.js +0 -436
- package/src/element/topLevelMetaAssertion/metaLemma.js +0 -40
- package/src/element/topLevelMetaAssertion/metatheorem.js +0 -40
- package/src/element/topLevelMetaAssertion.js +0 -276
- package/src/element/type.js +0 -374
- package/src/element/typePrefix.js +0 -113
- package/src/element/variable.js +0 -259
- package/src/elements.js +0 -13
- package/src/metaTypeNames.js +0 -5
- package/src/metaTypes.js +0 -71
- package/src/node/argument.js +0 -30
- package/src/node/assertion/contained.js +0 -53
- package/src/node/assertion/defined.js +0 -46
- package/src/node/assertion/property.js +0 -30
- package/src/node/assertion/signature.js +0 -23
- package/src/node/assertion/subproof.js +0 -16
- package/src/node/assertion/type.js +0 -23
- package/src/node/assertion.js +0 -7
- package/src/node/assumption/metaLevel.js +0 -23
- package/src/node/assumption.js +0 -23
- package/src/node/body/axiom.js +0 -7
- package/src/node/body/conjecture.js +0 -7
- package/src/node/body/lemma.js +0 -7
- package/src/node/body/metaLemma.js +0 -7
- package/src/node/body/metatheorem.js +0 -7
- package/src/node/body/rule.js +0 -42
- package/src/node/body/theorem.js +0 -7
- package/src/node/body.js +0 -30
- package/src/node/combinator.js +0 -16
- package/src/node/conclusion.js +0 -23
- package/src/node/constructor.js +0 -16
- package/src/node/declaration/combinator.js +0 -16
- package/src/node/declaration/complexType.js +0 -88
- package/src/node/declaration/constructor.js +0 -46
- package/src/node/declaration/metavariable.js +0 -30
- package/src/node/declaration/property.js +0 -42
- package/src/node/declaration/simpleType.js +0 -87
- package/src/node/declaration/typePrefix.js +0 -24
- package/src/node/declaration/variable.js +0 -53
- package/src/node/declaration.js +0 -7
- package/src/node/deduction.js +0 -23
- package/src/node/derivation.js +0 -19
- package/src/node/document.js +0 -7
- package/src/node/equality.js +0 -35
- package/src/node/equivalence.js +0 -16
- package/src/node/equivalences.js +0 -7
- package/src/node/error.js +0 -7
- package/src/node/frame.js +0 -40
- package/src/node/header/axiom.js +0 -16
- package/src/node/header/conjecture.js +0 -7
- package/src/node/header/lemma.js +0 -7
- package/src/node/header/metaLemma.js +0 -7
- package/src/node/header/metatheorem.js +0 -7
- package/src/node/header/rule.js +0 -7
- package/src/node/header/theorem.js +0 -7
- package/src/node/header.js +0 -54
- package/src/node/hypothesis.js +0 -23
- package/src/node/judgement.js +0 -30
- package/src/node/label.js +0 -16
- package/src/node/labels.js +0 -16
- package/src/node/metaArgument.js +0 -16
- package/src/node/metaType.js +0 -26
- package/src/node/metavariable.js +0 -42
- package/src/node/parameter.js +0 -51
- package/src/node/parenthesisedLabel.js +0 -16
- package/src/node/parenthesisedLabels.js +0 -23
- package/src/node/placeholder.js +0 -7
- package/src/node/procedureCall.js +0 -30
- package/src/node/procedureReference.js +0 -26
- package/src/node/proof.js +0 -16
- package/src/node/proofAssertion/premise.js +0 -16
- package/src/node/proofAssertion/step.js +0 -52
- package/src/node/proofAssertion/supposition.js +0 -16
- package/src/node/proofAssertion.js +0 -23
- package/src/node/property.js +0 -28
- package/src/node/propertyRelation.js +0 -30
- package/src/node/qualification.js +0 -23
- package/src/node/reference.js +0 -16
- package/src/node/rule.js +0 -51
- package/src/node/section.js +0 -44
- package/src/node/signature.js +0 -16
- package/src/node/statement.js +0 -167
- package/src/node/subDerivation.js +0 -19
- package/src/node/subproof.js +0 -35
- package/src/node/substitution/frame.js +0 -37
- package/src/node/substitution/reference.js +0 -38
- package/src/node/substitution/statement.js +0 -70
- package/src/node/substitution/term.js +0 -38
- package/src/node/substitution.js +0 -7
- package/src/node/term.js +0 -75
- package/src/node/topLevelAssertion/axiom.js +0 -13
- package/src/node/topLevelAssertion/conjecture.js +0 -13
- package/src/node/topLevelAssertion/lemma.js +0 -13
- package/src/node/topLevelAssertion/theorem.js +0 -13
- package/src/node/topLevelAssertion.js +0 -58
- package/src/node/topLevelMetaAssertion/metaLemma.js +0 -13
- package/src/node/topLevelMetaAssertion/metatheorem.js +0 -13
- package/src/node/topLevelMetaAssertion.js +0 -51
- package/src/node/type.js +0 -74
- package/src/node/typePrefix.js +0 -26
- package/src/node/types.js +0 -16
- package/src/node/variable.js +0 -26
- package/src/nominal/lexer.js +0 -5
- package/src/nominal/parser.js +0 -12
- package/src/nonTerminalNodeMap.js +0 -261
- package/src/pass/zip.js +0 -19
- package/src/preamble.js +0 -64
- package/src/process/assign.js +0 -53
- package/src/process/discharge.js +0 -33
- package/src/process/equate.js +0 -94
- package/src/process/instantiate.js +0 -198
- package/src/process/unification.js +0 -332
- package/src/process/unify.js +0 -504
- package/src/process/validate.js +0 -174
- package/src/process/validation.js +0 -410
- package/src/process/verify.js +0 -299
- package/src/ruleNames.js +0 -86
- package/src/tokenTypes.js +0 -4
- package/src/utilities/assignment.js +0 -57
- package/src/utilities/bnf.js +0 -20
- package/src/utilities/brackets.js +0 -87
- package/src/utilities/breakPoint.js +0 -29
- package/src/utilities/context.js +0 -223
- package/src/utilities/element.js +0 -2293
- package/src/utilities/equivalence.js +0 -25
- package/src/utilities/equivalences.js +0 -158
- package/src/utilities/instance.js +0 -40
- package/src/utilities/json.js +0 -1273
- package/src/utilities/string.js +0 -282
- package/src/utilities/substitutions.js +0 -93
- package/src/utilities/synoptic.js +0 -135
- package/src/utilities/type.js +0 -19
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Assertion from "../assertion";
|
|
4
|
-
|
|
5
|
-
import { define } from "../../elements";
|
|
6
|
-
import { instantiate } from "../../utilities/context";
|
|
7
|
-
import { breakPointFromJSON } from "../../utilities/breakPoint";
|
|
8
|
-
import { instantiatePropertyAssertion } from "../../process/instantiate";
|
|
9
|
-
import { variableAssignmentFromPrepertyAssertion } from "../../process/assign";
|
|
10
|
-
import { termFromPropertyAssertionNode, propertyAssertionFromStatementNode, propertyRelationFromPropertyAssertionNode } from "../../utilities/element";
|
|
11
|
-
|
|
12
|
-
export default define(class PropertyAssertion extends Assertion {
|
|
13
|
-
constructor(context, string, node, breakPoint, term, propertyRelation) {
|
|
14
|
-
super(context, string, node, breakPoint);
|
|
15
|
-
|
|
16
|
-
this.term = term;
|
|
17
|
-
this.propertyRelation = propertyRelation;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
getTerm() {
|
|
21
|
-
return this.term;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
getPropertyRelation() {
|
|
25
|
-
return this.propertyRelation;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
getPropertyAssertionNode() {
|
|
29
|
-
const node = this.getNode(),
|
|
30
|
-
propertyAssertionNode = node; ///
|
|
31
|
-
|
|
32
|
-
return propertyAssertionNode;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
getType() { return this.propertyRelation.getType(); }
|
|
36
|
-
|
|
37
|
-
compareTermAndPropertyRelation(term, propertyRelation, context) {
|
|
38
|
-
let comparesToTermAndPropertyRelation = false;
|
|
39
|
-
|
|
40
|
-
const termString = term.getString(),
|
|
41
|
-
propertyRelationString = propertyRelation.getString(),
|
|
42
|
-
propertyAssertionString = this.getString(); ///
|
|
43
|
-
|
|
44
|
-
context.trace(`Comparing the '${propertyAssertionString}' property assertion to the '${termString}' term and '${propertyRelationString}' property relation...`);
|
|
45
|
-
|
|
46
|
-
const termA = term,
|
|
47
|
-
termB = this.term, ///
|
|
48
|
-
termAEqualToTermB = termA.isEqualTo(termB);
|
|
49
|
-
|
|
50
|
-
if (termAEqualToTermB) {
|
|
51
|
-
const propertyRelationEqualToPropertyRelation = this.propertyRelation.isEqualTo(propertyRelation);
|
|
52
|
-
|
|
53
|
-
comparesToTermAndPropertyRelation = propertyRelationEqualToPropertyRelation; ///
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (comparesToTermAndPropertyRelation) {
|
|
57
|
-
context.debug(`...compared the '${propertyAssertionString}' property assertion to the '${termString}' term and '${propertyRelationString}' property relation.`);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return comparesToTermAndPropertyRelation;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
validate(context) {
|
|
64
|
-
let propertyAssertion = null;
|
|
65
|
-
|
|
66
|
-
const propertyAssertionString = this.getString(); ///
|
|
67
|
-
|
|
68
|
-
context.trace(`Validating the '${propertyAssertionString}' property assertion...`);
|
|
69
|
-
|
|
70
|
-
let validates = false;
|
|
71
|
-
|
|
72
|
-
const validAssertion = this.findValidAssertion(context);
|
|
73
|
-
|
|
74
|
-
if (validAssertion) {
|
|
75
|
-
validates = true;
|
|
76
|
-
|
|
77
|
-
propertyAssertion = validAssertion; ///
|
|
78
|
-
|
|
79
|
-
context.debug(`...the '${propertyAssertionString}' property assertion is already valid.`);
|
|
80
|
-
} else {
|
|
81
|
-
const propertyRelationVerifies = this.validatePropertyRelation(context);
|
|
82
|
-
|
|
83
|
-
if (propertyRelationVerifies) {
|
|
84
|
-
const termValidates = this.validateTerm(context);
|
|
85
|
-
|
|
86
|
-
if (termValidates) {
|
|
87
|
-
const stated = context.isStated();
|
|
88
|
-
|
|
89
|
-
let validatesWhenStated = false,
|
|
90
|
-
validatesWhenDerived = false;
|
|
91
|
-
|
|
92
|
-
if (stated) {
|
|
93
|
-
validatesWhenStated = this.validateWhenStated(context);
|
|
94
|
-
} else {
|
|
95
|
-
validatesWhenDerived = this.validateWhenDerived(context);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (validatesWhenStated || validatesWhenDerived) {
|
|
99
|
-
validates = true;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (validates) {
|
|
105
|
-
const assertion = this; ///
|
|
106
|
-
|
|
107
|
-
propertyAssertion = assertion; ///
|
|
108
|
-
|
|
109
|
-
this.assign(context);
|
|
110
|
-
|
|
111
|
-
context.addAssertion(assertion);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (validates) {
|
|
116
|
-
context.debug(`...validated the '${propertyAssertionString}' property assertion.`);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return propertyAssertion;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
validateTerm(context) {
|
|
123
|
-
let termValidates = false;
|
|
124
|
-
|
|
125
|
-
const propertyAssertionString = this.getString(); ///
|
|
126
|
-
|
|
127
|
-
context.trace(`Validating the '${propertyAssertionString}' property assertion's term...`);
|
|
128
|
-
|
|
129
|
-
const type = this.getType(),
|
|
130
|
-
term = this.term.validate(context, (term, context) => {
|
|
131
|
-
let validatesForwards = false;
|
|
132
|
-
|
|
133
|
-
const termType = term.getType(),
|
|
134
|
-
termTypeEqualToSubTypeOrSuperTypeOfType = termType.isEqualToSubTypeOrSuperTypeOf(type);
|
|
135
|
-
|
|
136
|
-
if (termTypeEqualToSubTypeOrSuperTypeOfType) {
|
|
137
|
-
validatesForwards = true;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return validatesForwards;
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
if (term !== null) {
|
|
144
|
-
this.term = term;
|
|
145
|
-
|
|
146
|
-
termValidates = true;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (termValidates) {
|
|
150
|
-
context.debug(`...validated the '${propertyAssertionString}' property assertion's term...`);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return termValidates;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
validateWhenStated(context) {
|
|
157
|
-
let validatesWhenStated;
|
|
158
|
-
|
|
159
|
-
const propertyAssertionString = this.getString(); ///
|
|
160
|
-
|
|
161
|
-
context.trace(`Validating the '${propertyAssertionString}' stated property assertion...`);
|
|
162
|
-
|
|
163
|
-
validatesWhenStated = true;
|
|
164
|
-
|
|
165
|
-
if (validatesWhenStated) {
|
|
166
|
-
context.debug(`...verified the '${propertyAssertionString}' stated property assertion.`);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return validatesWhenStated;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
validateWhenDerived(context) {
|
|
173
|
-
let validatesWhenDerived;
|
|
174
|
-
|
|
175
|
-
const propertyAssertionString = this.getString(); ///
|
|
176
|
-
|
|
177
|
-
context.trace(`Validating the '${propertyAssertionString}' derived property assertion...`);
|
|
178
|
-
|
|
179
|
-
validatesWhenDerived = true;
|
|
180
|
-
|
|
181
|
-
if (validatesWhenDerived) {
|
|
182
|
-
context.debug(`...validated the '${propertyAssertionString}' derived property assertion.`);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return validatesWhenDerived;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
validatePropertyRelation(context) {
|
|
189
|
-
let propertyRelationValidates = false;
|
|
190
|
-
|
|
191
|
-
const propertyAssertionString = this.getString(); ///
|
|
192
|
-
|
|
193
|
-
context.trace(`Validating the '${propertyAssertionString}' property assertion's property relation...`);
|
|
194
|
-
|
|
195
|
-
const propertyRelation = this.propertyRelation.validate(context);
|
|
196
|
-
|
|
197
|
-
if (propertyRelation !== null) {
|
|
198
|
-
propertyRelationValidates = true;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (propertyRelationValidates) {
|
|
202
|
-
context.debug(`...validated the '${propertyAssertionString}' property assertion's property relation.`);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return propertyRelationValidates;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
assign(context) {
|
|
209
|
-
const stated = context.isStated();
|
|
210
|
-
|
|
211
|
-
if (!stated) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const propertyAssertion = this, ///
|
|
216
|
-
variableAssigment = variableAssignmentFromPrepertyAssertion(propertyAssertion, context);
|
|
217
|
-
|
|
218
|
-
context.addAssignment(variableAssigment);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
static name = "PropertyAssertion";
|
|
222
|
-
|
|
223
|
-
static fromJSON(json, context) {
|
|
224
|
-
let propertyAssertion = null;
|
|
225
|
-
|
|
226
|
-
const { name } = json;
|
|
227
|
-
|
|
228
|
-
if (this.name === name) {
|
|
229
|
-
instantiate((context) => {
|
|
230
|
-
const { string } = json,
|
|
231
|
-
propertyAssertionNode = instantiatePropertyAssertion(string, context),
|
|
232
|
-
node = propertyAssertionNode, ///
|
|
233
|
-
breakPoint = breakPointFromJSON(json),
|
|
234
|
-
term = termFromPropertyAssertionNode(propertyAssertionNode, context),
|
|
235
|
-
propertyRelation = propertyRelationFromPropertyAssertionNode(propertyAssertionNode, context);
|
|
236
|
-
|
|
237
|
-
context = null;
|
|
238
|
-
|
|
239
|
-
propertyAssertion = new PropertyAssertion(context, string, node, breakPoint, term, propertyRelation);
|
|
240
|
-
}, context);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
return propertyAssertion;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
static fromStatement(statement, context) {
|
|
247
|
-
const statementNode = statement.getNode(),
|
|
248
|
-
propertyAssertion = propertyAssertionFromStatementNode(statementNode, context);
|
|
249
|
-
|
|
250
|
-
return propertyAssertion;
|
|
251
|
-
}
|
|
252
|
-
});
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Assertion from "../assertion";
|
|
4
|
-
|
|
5
|
-
import { define } from "../../elements";
|
|
6
|
-
import { breakPointFromJSON } from "../../utilities/breakPoint";
|
|
7
|
-
import { reconcile, instantiate } from "../../utilities/context";
|
|
8
|
-
import { instantiateSignatureAssertion } from "../../process/instantiate";
|
|
9
|
-
import { signatureFromSignatureAssertionNode, referenceFromSignatureAssertionNode, signatureAssertionFromStatementNode } from "../../utilities/element";
|
|
10
|
-
|
|
11
|
-
export default define(class SignatureAssertion extends Assertion {
|
|
12
|
-
constructor(context, string, node, breakPoint, signature, reference) {
|
|
13
|
-
super(context, string, node, breakPoint);
|
|
14
|
-
|
|
15
|
-
this.signature = signature;
|
|
16
|
-
this.reference = reference;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getSignature() {
|
|
20
|
-
return this.signature;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getReference() {
|
|
24
|
-
return this.reference;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
getSignatureAssertionNode() {
|
|
28
|
-
const node = this.getNode(),
|
|
29
|
-
signatureAssertionNode = node; ///
|
|
30
|
-
|
|
31
|
-
return signatureAssertionNode;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
validate(context) {
|
|
35
|
-
let signatureAssertion = null;
|
|
36
|
-
|
|
37
|
-
const signatureAssertionString = this.getString(); ///
|
|
38
|
-
|
|
39
|
-
context.trace(`Validating the '${signatureAssertionString}' signature assertion...`);
|
|
40
|
-
|
|
41
|
-
let validates = true;
|
|
42
|
-
|
|
43
|
-
const validAssertion = this.findValidAssertion(context);
|
|
44
|
-
|
|
45
|
-
if (validAssertion) {
|
|
46
|
-
validates = true;
|
|
47
|
-
|
|
48
|
-
signatureAssertion = validAssertion; ///
|
|
49
|
-
|
|
50
|
-
context.debug(`...the '${signatureAssertionString}' signature assertion is already valid.`);
|
|
51
|
-
} else {
|
|
52
|
-
const signatureVerifies = this.validateSignature(context);
|
|
53
|
-
|
|
54
|
-
if (signatureVerifies) {
|
|
55
|
-
const referenceVerifies = this.validateReference(context);
|
|
56
|
-
|
|
57
|
-
if (referenceVerifies) {
|
|
58
|
-
validates = true;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
validates = true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (validates) {
|
|
65
|
-
const assertion = this; ///
|
|
66
|
-
|
|
67
|
-
signatureAssertion = assertion; ///
|
|
68
|
-
|
|
69
|
-
context.addAssertion(signatureAssertion);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (validates) {
|
|
74
|
-
context.debug(`...validated the '${signatureAssertionString}' signature assertion.`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return signatureAssertion;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
validateSignature(context) {
|
|
81
|
-
let signatureValidates = false;
|
|
82
|
-
|
|
83
|
-
const signatureAssertionString = this.getString(); ///
|
|
84
|
-
|
|
85
|
-
context.trace(`Validating the '${signatureAssertionString}' signature assertion's signature...`);
|
|
86
|
-
|
|
87
|
-
const signature = this.signature.validate(context);
|
|
88
|
-
|
|
89
|
-
if (signature !== null) {
|
|
90
|
-
this.signature = signature;
|
|
91
|
-
|
|
92
|
-
signatureValidates = true;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (signatureValidates) {
|
|
96
|
-
context.debug(`...validated the '${signatureAssertionString}' signature assertion's signature.`);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return signatureValidates;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
validateReference(context) {
|
|
103
|
-
let referenceVerifies = false;
|
|
104
|
-
|
|
105
|
-
const signatureAssertionString = this.getString(); ///
|
|
106
|
-
|
|
107
|
-
context.trace(`Validating the '${signatureAssertionString}' signature assertion's reference...`);
|
|
108
|
-
|
|
109
|
-
const reference = this.reference.validate(context);
|
|
110
|
-
|
|
111
|
-
if (reference !== null) {
|
|
112
|
-
const axiom = context.findAxiomByReference(reference);
|
|
113
|
-
|
|
114
|
-
if (axiom !== null) {
|
|
115
|
-
const satisfiable = axiom.isSatisfiable();
|
|
116
|
-
|
|
117
|
-
if (satisfiable) {
|
|
118
|
-
const signatureUnifies = this.unifySignature(context);
|
|
119
|
-
|
|
120
|
-
if (signatureUnifies) {
|
|
121
|
-
this.reference = reference;
|
|
122
|
-
|
|
123
|
-
referenceVerifies = true;
|
|
124
|
-
}
|
|
125
|
-
} else {
|
|
126
|
-
const axiomString = axiom.getString();
|
|
127
|
-
|
|
128
|
-
context.debug(`The '${axiomString}' axiom is not satisfiable.`);
|
|
129
|
-
}
|
|
130
|
-
} else {
|
|
131
|
-
const referencdString = reference.getString();
|
|
132
|
-
|
|
133
|
-
context.debug(`There is no axiom for the '${referencdString}' reference.`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (referenceVerifies) {
|
|
138
|
-
context.debug(`...validated the '${signatureAssertionString}' signature assertion's reference.`);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return referenceVerifies;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
unifySignature(context) {
|
|
145
|
-
let signatureUnifies;
|
|
146
|
-
|
|
147
|
-
const signatureAssertionString = this.getString(); ///
|
|
148
|
-
|
|
149
|
-
context.trace(`Unifying the '${signatureAssertionString}' signature assertion's signature...`);
|
|
150
|
-
|
|
151
|
-
reconcile((context) => {
|
|
152
|
-
const axiom = context.findAxiomByReference(this.reference);
|
|
153
|
-
|
|
154
|
-
signatureUnifies = axiom.unifySignature(this.signature, context);
|
|
155
|
-
}, context);
|
|
156
|
-
|
|
157
|
-
if (signatureUnifies) {
|
|
158
|
-
context.debug(`...unified the '${signatureAssertionString}' signature assertion's signature.`);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return signatureUnifies;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
async unifyTopLevelAssertion(topLevelAssertion, context) {
|
|
165
|
-
let topLevelAssertionUnifies;
|
|
166
|
-
|
|
167
|
-
const topLevelAssertionString = topLevelAssertion.getString(),
|
|
168
|
-
signatureAssertionString = this.getString();
|
|
169
|
-
|
|
170
|
-
context.trace(`Unifying the '${topLevelAssertionString}' top-level assertion with the '${signatureAssertionString}' signature assertion...`);
|
|
171
|
-
|
|
172
|
-
await reconcile(async (context) => {
|
|
173
|
-
const axiom = context.findAxiomByReference(this.reference);
|
|
174
|
-
|
|
175
|
-
axiom.unifySignature(this.signature, context);
|
|
176
|
-
|
|
177
|
-
topLevelAssertionUnifies = await axiom.unifyTopLevelAssertion(topLevelAssertion, context);
|
|
178
|
-
}, context);
|
|
179
|
-
|
|
180
|
-
if (topLevelAssertionUnifies) {
|
|
181
|
-
context.trace(`...unified the '${topLevelAssertionString}' top-level assertion with the '${signatureAssertionString}' signature assertion...`);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
return topLevelAssertionUnifies;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
async unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context) {
|
|
188
|
-
let stepAndSubproofOrProofAssertionsUnify;
|
|
189
|
-
|
|
190
|
-
await reconcile(async (context) => {
|
|
191
|
-
const axiom = context.findAxiomByReference(this.reference);
|
|
192
|
-
|
|
193
|
-
axiom.unifySignature(this.signature, context);
|
|
194
|
-
|
|
195
|
-
stepAndSubproofOrProofAssertionsUnify = await axiom.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
|
|
196
|
-
}, context);
|
|
197
|
-
|
|
198
|
-
return stepAndSubproofOrProofAssertionsUnify;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
static name = "SignatureAssertion";
|
|
202
|
-
|
|
203
|
-
static fromJSON(json, context) {
|
|
204
|
-
let signatureAssertion = null;
|
|
205
|
-
|
|
206
|
-
const { name } = json;
|
|
207
|
-
|
|
208
|
-
if (this.name === name) {
|
|
209
|
-
instantiate((context) => {
|
|
210
|
-
const { string } = json,
|
|
211
|
-
definedAssertionNode = instantiateSignatureAssertion(string, context),
|
|
212
|
-
node = definedAssertionNode, ///
|
|
213
|
-
breakPoint = breakPointFromJSON(json),
|
|
214
|
-
signature = signatureFromSignatureAssertionNode(definedAssertionNode, context),
|
|
215
|
-
reference = referenceFromSignatureAssertionNode(definedAssertionNode, context);
|
|
216
|
-
|
|
217
|
-
context = null;
|
|
218
|
-
|
|
219
|
-
signatureAssertion = new SignatureAssertion(context, string, node, breakPoint, signature, reference);
|
|
220
|
-
}, context);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
return signatureAssertion;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
static fromStep(step, context) {
|
|
227
|
-
const statementNode = step.getStatementNode(),
|
|
228
|
-
signatureAssertion = signatureAssertionFromStatementNode(statementNode, context);
|
|
229
|
-
|
|
230
|
-
return signatureAssertion;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
static fromStatement(statement, context) {
|
|
234
|
-
const statementNode = statement.getNode(),
|
|
235
|
-
signatureAssertion = signatureAssertionFromStatementNode(statementNode, context);
|
|
236
|
-
|
|
237
|
-
return signatureAssertion;
|
|
238
|
-
}
|
|
239
|
-
});
|