occam-verify-cli 1.0.800 → 1.0.806
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/context/branching.js +2 -2
- package/lib/context/ephemeral.js +186 -69
- package/lib/context/file/nominal.js +87 -52
- package/lib/context/liminal.js +2 -2
- package/lib/context/proof.js +55 -55
- package/lib/context/synthetic.js +151 -74
- package/lib/context.js +57 -17
- package/lib/element/assertion/defined.js +3 -3
- package/lib/element/assumption/metaLevel.js +6 -4
- package/lib/element/combinator.js +4 -2
- package/lib/element/conclusion.js +4 -2
- package/lib/element/constructor.js +4 -2
- package/lib/element/declaration/metavariable.js +10 -9
- package/lib/element/declaration/variable.js +7 -7
- package/lib/element/deduction.js +4 -2
- package/lib/element/label.js +9 -5
- package/lib/element/metavariable.js +34 -34
- package/lib/element/proofAssertion/premise.js +4 -3
- package/lib/element/proofAssertion/step.js +4 -2
- package/lib/element/reference.js +6 -4
- package/lib/element/statement.js +9 -1
- package/lib/element/substitution/frame.js +43 -29
- package/lib/element/substitution/reference.js +38 -28
- package/lib/element/substitution/statement.js +46 -38
- package/lib/element/substitution/term.js +49 -35
- package/lib/element/variable.js +6 -7
- package/lib/preamble.js +1 -2
- package/lib/process/assign.js +11 -10
- package/lib/process/equate.js +3 -2
- package/lib/process/unify.js +7 -7
- package/lib/utilities/context.js +13 -5
- package/lib/utilities/element.js +1 -1
- package/lib/utilities/equivalences.js +131 -0
- package/lib/utilities/json.js +59 -1
- package/lib/utilities/validation.js +4 -3
- package/package.json +2 -2
- package/src/context/branching.js +2 -2
- package/src/context/ephemeral.js +421 -237
- package/src/context/file/nominal.js +127 -77
- package/src/context/liminal.js +2 -2
- package/src/context/proof.js +81 -82
- package/src/context/synthetic.js +198 -88
- package/src/context.js +81 -20
- package/src/element/assertion/defined.js +4 -4
- package/src/element/assumption/metaLevel.js +8 -6
- package/src/element/combinator.js +4 -2
- package/src/element/conclusion.js +4 -2
- package/src/element/constructor.js +4 -2
- package/src/element/declaration/metavariable.js +10 -8
- package/src/element/declaration/variable.js +8 -7
- package/src/element/deduction.js +4 -2
- package/src/element/label.js +11 -7
- package/src/element/metavariable.js +11 -11
- package/src/element/proofAssertion/premise.js +4 -4
- package/src/element/proofAssertion/step.js +4 -2
- package/src/element/reference.js +7 -5
- package/src/element/statement.js +14 -0
- package/src/element/substitution/frame.js +47 -32
- package/src/element/substitution/reference.js +44 -34
- package/src/element/substitution/statement.js +63 -54
- package/src/element/substitution/term.js +53 -38
- package/src/element/variable.js +6 -7
- package/src/preamble.js +0 -1
- package/src/process/assign.js +17 -14
- package/src/process/equate.js +3 -1
- package/src/process/unify.js +10 -13
- package/src/utilities/context.js +13 -6
- package/src/utilities/element.js +1 -0
- package/src/utilities/equivalences.js +158 -0
- package/src/utilities/json.js +66 -0
- package/src/utilities/validation.js +6 -5
- package/lib/element/equivalences.js +0 -173
- package/src/element/equivalences.js +0 -237
|
@@ -4,7 +4,6 @@ import { FileContext } from "occam-languages";
|
|
|
4
4
|
import { arrayUtilities } from "necessary";
|
|
5
5
|
import { lexersUtilities, parsersUtilities } from "occam-nominal";
|
|
6
6
|
|
|
7
|
-
import elements from "../../elements";
|
|
8
7
|
import NominalLexer from "../../nominal/lexer";
|
|
9
8
|
import NominalParser from "../../nominal/parser";
|
|
10
9
|
|
|
@@ -17,7 +16,6 @@ import { typesFromJSON,
|
|
|
17
16
|
typesToTypesJSON,
|
|
18
17
|
rulesToRulesJSON,
|
|
19
18
|
theoremsFromJSON,
|
|
20
|
-
variablesFromJSON,
|
|
21
19
|
lemmasFromNothing,
|
|
22
20
|
axiomsToAxiomsJSON,
|
|
23
21
|
conjecturesFromJSON,
|
|
@@ -25,23 +23,24 @@ import { typesFromJSON,
|
|
|
25
23
|
typePrefixesFromJSON,
|
|
26
24
|
constructorsFromJSON,
|
|
27
25
|
metatheoremsFromJSON,
|
|
28
|
-
metavariablesFromJSON,
|
|
29
26
|
metaLemmasFromNothing,
|
|
30
27
|
theoremsToTheoremsJSON,
|
|
31
|
-
|
|
28
|
+
declaredVariablesFromJSON,
|
|
32
29
|
conjecturesToConjecturesJSON,
|
|
33
30
|
combinatorsToCombinatorsJSON,
|
|
31
|
+
declaredMetavariablesFromJSON,
|
|
34
32
|
typePrefixesToTypePrefixesJSON,
|
|
35
33
|
constructorsToConstructorsJSON,
|
|
36
34
|
metatheoremsToMetatheoremsJSON,
|
|
37
|
-
|
|
35
|
+
declaredVariablesToDeclaredVariablesJSON,
|
|
36
|
+
declaredMetavariablesToDeclaredMetavariablesJSON } from "../../utilities/json";
|
|
38
37
|
|
|
39
38
|
const { push, filter } = arrayUtilities,
|
|
40
39
|
{ nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
41
40
|
{ nominalParserFromCombinedCustomGrammar } = parsersUtilities;
|
|
42
41
|
|
|
43
42
|
export default class NominalFileContext extends FileContext {
|
|
44
|
-
constructor(context, fileContent, filePath, tokens, node, lexer, parser, types, rules, axioms, lemmas, theorems,
|
|
43
|
+
constructor(context, fileContent, filePath, tokens, node, lexer, parser, types, rules, axioms, lemmas, theorems, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, declaredVariables, declaredMetavariables) {
|
|
45
44
|
super(context, fileContent, filePath, tokens, node);
|
|
46
45
|
|
|
47
46
|
this.lexer = lexer;
|
|
@@ -55,14 +54,14 @@ export default class NominalFileContext extends FileContext {
|
|
|
55
54
|
this.axioms = axioms;
|
|
56
55
|
this.lemmas = lemmas;
|
|
57
56
|
this.theorems = theorems;
|
|
58
|
-
this.variables = variables;
|
|
59
57
|
this.metaLemmas = metaLemmas;
|
|
60
58
|
this.conjectures = conjectures;
|
|
61
59
|
this.combinators = combinators;
|
|
62
60
|
this.typePrefixes = typePrefixes;
|
|
63
61
|
this.constructors = constructors;
|
|
64
62
|
this.metatheorems = metatheorems;
|
|
65
|
-
this.
|
|
63
|
+
this.declaredVariables = declaredVariables;
|
|
64
|
+
this.declaredMetavariables = declaredMetavariables;
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
getLexer() {
|
|
@@ -73,16 +72,8 @@ export default class NominalFileContext extends FileContext {
|
|
|
73
72
|
return this.parser;
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
getJudgements() {
|
|
77
|
-
const judgements = [];
|
|
78
|
-
|
|
79
|
-
return judgements;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
75
|
getEquivalences() {
|
|
83
|
-
const
|
|
84
|
-
context = this, ///
|
|
85
|
-
equivalences = Equivalences.fromNothing(context);
|
|
76
|
+
const equivalences = [];
|
|
86
77
|
|
|
87
78
|
return equivalences;
|
|
88
79
|
}
|
|
@@ -181,10 +172,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
181
172
|
return theorems;
|
|
182
173
|
}
|
|
183
174
|
|
|
184
|
-
getVariables(includeRelease = true) {
|
|
185
|
-
return this.variables;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
175
|
getProcedures(includeRelease = true) {
|
|
189
176
|
const procedures = includeRelease ?
|
|
190
177
|
this.context.getProcedures() :
|
|
@@ -241,8 +228,72 @@ export default class NominalFileContext extends FileContext {
|
|
|
241
228
|
return metatheorems;
|
|
242
229
|
}
|
|
243
230
|
|
|
244
|
-
|
|
245
|
-
return this.
|
|
231
|
+
getDeclaredVariables() {
|
|
232
|
+
return this.declaredVariables;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
getDeclaredMetavariables(includeRelease = true) {
|
|
236
|
+
return this.declaredMetavariables;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
getTerms() {
|
|
240
|
+
const terms = [];
|
|
241
|
+
|
|
242
|
+
return terms;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
getFrames() {
|
|
246
|
+
const frames = [];
|
|
247
|
+
|
|
248
|
+
return frames;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
getEqualities() {
|
|
252
|
+
const equalities = [];
|
|
253
|
+
|
|
254
|
+
return equalities;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
getJudgements() {
|
|
258
|
+
const judgements = [];
|
|
259
|
+
|
|
260
|
+
return judgements;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
getAssertions() {
|
|
264
|
+
const assertions = [];
|
|
265
|
+
|
|
266
|
+
return assertions;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
getStatements() {
|
|
270
|
+
const statements = [];
|
|
271
|
+
|
|
272
|
+
return statements;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
getReferences() {
|
|
276
|
+
const references = [];
|
|
277
|
+
|
|
278
|
+
return references;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
getAssumptions() {
|
|
282
|
+
const assumptions = [];
|
|
283
|
+
|
|
284
|
+
return assumptions;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
getMetavariables() {
|
|
288
|
+
const metavariables = [];
|
|
289
|
+
|
|
290
|
+
return metavariables;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
getSubstitutions() {
|
|
294
|
+
const substitutions = [];
|
|
295
|
+
|
|
296
|
+
return substitutions;
|
|
246
297
|
}
|
|
247
298
|
|
|
248
299
|
addType(type) {
|
|
@@ -290,15 +341,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
290
341
|
this.trace(`Added the '${theoremString}' theorem to the '${filePath}' file context.`)
|
|
291
342
|
}
|
|
292
343
|
|
|
293
|
-
addVariable(variable) {
|
|
294
|
-
this.variables.push(variable);
|
|
295
|
-
|
|
296
|
-
const filePath = this.getFilePath(),
|
|
297
|
-
variableString = variable.getString();
|
|
298
|
-
|
|
299
|
-
this.trace(`Added the '${variableString}' variable to the '${filePath}' file context.`)
|
|
300
|
-
}
|
|
301
|
-
|
|
302
344
|
addMetaLemma(metaLemma) {
|
|
303
345
|
this.metaLemmas.push(metaLemma);
|
|
304
346
|
|
|
@@ -353,22 +395,29 @@ export default class NominalFileContext extends FileContext {
|
|
|
353
395
|
this.trace(`Added the '${metatheoremString}' metatheorem to the '${filePath}' file context.`)
|
|
354
396
|
}
|
|
355
397
|
|
|
356
|
-
|
|
357
|
-
this.
|
|
398
|
+
addDeclaredVariable(declaredVariable) {
|
|
399
|
+
this.declaredVariables.push(declaredVariable);
|
|
400
|
+
|
|
401
|
+
const filePath = this.getFilePath(),
|
|
402
|
+
declaredVariableString = declaredVariable.getString();
|
|
403
|
+
|
|
404
|
+
this.trace(`Added the '${declaredVariableString}' declared variable to the '${filePath}' file context.`)
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
addDeclaredMetavariable(declaredMetavariable) {
|
|
408
|
+
this.declaredMetavariables.push(declaredMetavariable);
|
|
358
409
|
|
|
359
410
|
const filePath = this.getFilePath(),
|
|
360
|
-
|
|
411
|
+
declaredMetavariableString = declaredMetavariable.getString();
|
|
361
412
|
|
|
362
|
-
this.trace(`Added the '${
|
|
413
|
+
this.trace(`Added the '${declaredMetavariableString}' declared metavariable to the '${filePath}' file context.`)
|
|
363
414
|
}
|
|
364
415
|
|
|
365
416
|
findMetavariable(metavariable, context) {
|
|
366
|
-
const
|
|
367
|
-
specificMetavariable = metavariable; ///
|
|
417
|
+
const declaredMetavariables = this.getDeclaredMetavariables();
|
|
368
418
|
|
|
369
|
-
metavariable =
|
|
370
|
-
const
|
|
371
|
-
metavariableUnifies = generalMetavariable.unifyMetavariable(specificMetavariable, context);
|
|
419
|
+
metavariable = declaredMetavariables.find((declaredMetavariable) => {
|
|
420
|
+
const metavariableUnifies = declaredMetavariable.unifyMetavariable(metavariable, context);
|
|
372
421
|
|
|
373
422
|
if (metavariableUnifies) {
|
|
374
423
|
return true;
|
|
@@ -583,30 +632,30 @@ export default class NominalFileContext extends FileContext {
|
|
|
583
632
|
return typePrefix;
|
|
584
633
|
}
|
|
585
634
|
|
|
586
|
-
|
|
587
|
-
const
|
|
588
|
-
|
|
589
|
-
const
|
|
635
|
+
findDeclaredVariableByVariableIdentifier(VariableIdentitifer) {
|
|
636
|
+
const declaredVariables = this.getDeclaredVariables(),
|
|
637
|
+
declaredVariable = declaredVariables.find((declaredVariable) => {
|
|
638
|
+
const declaredVariableComparesToVariableIdentitifer = declaredVariable.compareVariableIdentifier(VariableIdentitifer);
|
|
590
639
|
|
|
591
|
-
if (
|
|
640
|
+
if (declaredVariableComparesToVariableIdentitifer) {
|
|
592
641
|
return true;
|
|
593
642
|
}
|
|
594
643
|
}) || null;
|
|
595
644
|
|
|
596
|
-
return
|
|
645
|
+
return declaredVariable;
|
|
597
646
|
}
|
|
598
647
|
|
|
599
|
-
|
|
600
|
-
const
|
|
601
|
-
|
|
602
|
-
const
|
|
648
|
+
findDeclaredMetavariableByMetavariableName(metavariableName) {
|
|
649
|
+
const declaredMetavariables = this.getDeclaredMetavariables(),
|
|
650
|
+
declaredMetavariable = declaredMetavariables.find((declaredMetavariable) => {
|
|
651
|
+
const declaredMetavariableComparesToMetavariableName = declaredMetavariable.compareMetavariableName(metavariableName);
|
|
603
652
|
|
|
604
|
-
if (
|
|
653
|
+
if (declaredMetavariableComparesToMetavariableName) {
|
|
605
654
|
return true;
|
|
606
655
|
}
|
|
607
656
|
}) || null;
|
|
608
657
|
|
|
609
|
-
return
|
|
658
|
+
return declaredMetavariable;
|
|
610
659
|
}
|
|
611
660
|
|
|
612
661
|
findMetaLevelAssumptionByMetaLevelAssumptionNode(metaLevelAssumptionNode) {
|
|
@@ -699,18 +748,18 @@ export default class NominalFileContext extends FileContext {
|
|
|
699
748
|
return typePrefixPresent;
|
|
700
749
|
}
|
|
701
750
|
|
|
702
|
-
|
|
703
|
-
const
|
|
704
|
-
|
|
751
|
+
isDeclaredVariablePresentByVariableIdentifier(variableIdentifier) {
|
|
752
|
+
const declaredVariable = this.findDeclaredVariableByVariableIdentifier(variableIdentifier),
|
|
753
|
+
declaredVariablePresent = (declaredVariable !== null);
|
|
705
754
|
|
|
706
|
-
return
|
|
755
|
+
return declaredVariablePresent;
|
|
707
756
|
}
|
|
708
757
|
|
|
709
|
-
|
|
710
|
-
const
|
|
711
|
-
|
|
758
|
+
isDeclaredMetavariablePresentByMetavariableName(metavariableName) {
|
|
759
|
+
const declaredMetavariable = this.findDeclaredMetavariableByMetavariableName(metavariableName),
|
|
760
|
+
declaredMetavariablePresent = (declaredMetavariable !== null);
|
|
712
761
|
|
|
713
|
-
return
|
|
762
|
+
return declaredMetavariablePresent;
|
|
714
763
|
}
|
|
715
764
|
|
|
716
765
|
isProcedurePresentByProcedureName(procedureName) {
|
|
@@ -732,14 +781,14 @@ export default class NominalFileContext extends FileContext {
|
|
|
732
781
|
this.axioms = [];
|
|
733
782
|
this.lemmas = [];
|
|
734
783
|
this.theorems = [];
|
|
735
|
-
this.variables = [];
|
|
736
784
|
this.metaLemmas = [];
|
|
737
785
|
this.conjectures = [];
|
|
738
786
|
this.combinators = [];
|
|
739
787
|
this.typePrefixes = [];
|
|
740
788
|
this.constructors = [];
|
|
741
789
|
this.metatheorems = [];
|
|
742
|
-
this.
|
|
790
|
+
this.declaredVariables = [];
|
|
791
|
+
this.declaredMetavariables = [];
|
|
743
792
|
}
|
|
744
793
|
|
|
745
794
|
complete() {
|
|
@@ -765,8 +814,9 @@ export default class NominalFileContext extends FileContext {
|
|
|
765
814
|
this.lemmas = lemmasFromNothing();
|
|
766
815
|
this.metaLemmas = metaLemmasFromNothing();
|
|
767
816
|
|
|
768
|
-
this.
|
|
769
|
-
this.
|
|
817
|
+
this.declaredMetavariables = declaredMetavariablesFromJSON(json, fileContext);
|
|
818
|
+
this.declaredVariables = declaredVariablesFromJSON(json, fileContext);
|
|
819
|
+
|
|
770
820
|
this.rules = rulesFromJSON(json, fileContext);
|
|
771
821
|
this.axioms = axiomsFromJSON(json, fileContext);
|
|
772
822
|
this.theorems = theoremsFromJSON(json, fileContext);
|
|
@@ -782,38 +832,38 @@ export default class NominalFileContext extends FileContext {
|
|
|
782
832
|
rulesJSON = rulesToRulesJSON(this.rules),
|
|
783
833
|
axiomsJSON = axiomsToAxiomsJSON(this.axioms),
|
|
784
834
|
theoremsJSON = theoremsToTheoremsJSON(this.theorems),
|
|
785
|
-
variablesJSON = variablesToVariablesJSON(this.variables),
|
|
786
835
|
conjecturesJSON = conjecturesToConjecturesJSON(this.conjectures),
|
|
787
836
|
combinatorsJSON = combinatorsToCombinatorsJSON(this.combinators),
|
|
788
837
|
typePrefixesJSON = typePrefixesToTypePrefixesJSON(this.typePrefixes),
|
|
789
838
|
constructorsJSON = constructorsToConstructorsJSON(this.constructors),
|
|
790
839
|
metatheoremsJSON = metatheoremsToMetatheoremsJSON(this.metatheorems),
|
|
791
|
-
|
|
840
|
+
declaredVariablesJSON = declaredVariablesToDeclaredVariablesJSON(this.declaredVariables),
|
|
841
|
+
declaredMetavariablesJSON = declaredMetavariablesToDeclaredMetavariablesJSON(this.declaredMetavariables),
|
|
792
842
|
filePath = this.filePath,
|
|
793
843
|
types = typesJSON, ///
|
|
794
844
|
rules = rulesJSON, ///
|
|
795
845
|
axioms = axiomsJSON, ///
|
|
796
846
|
theorems = theoremsJSON, ///
|
|
797
|
-
variables = variablesJSON, ///
|
|
798
847
|
conjectures = conjecturesJSON, ///
|
|
799
848
|
combinators = combinatorsJSON, ///
|
|
800
849
|
typePrefixes = typePrefixesJSON, ///
|
|
801
850
|
constructors = constructorsJSON, ///
|
|
802
851
|
metatheorems = metatheoremsJSON, ///
|
|
803
|
-
|
|
852
|
+
declaredVariables = declaredVariablesJSON, ///
|
|
853
|
+
declaredMetavariables = declaredMetavariablesJSON, ///
|
|
804
854
|
json = {
|
|
805
855
|
filePath,
|
|
806
856
|
types,
|
|
807
857
|
rules,
|
|
808
858
|
axioms,
|
|
809
859
|
theorems,
|
|
810
|
-
variables,
|
|
811
860
|
conjectures,
|
|
812
861
|
combinators,
|
|
813
862
|
typePrefixes,
|
|
814
863
|
constructors,
|
|
815
864
|
metatheorems,
|
|
816
|
-
|
|
865
|
+
declaredVariables,
|
|
866
|
+
declaredMetavariables
|
|
817
867
|
};
|
|
818
868
|
|
|
819
869
|
return json;
|
|
@@ -831,15 +881,15 @@ export default class NominalFileContext extends FileContext {
|
|
|
831
881
|
axioms = [],
|
|
832
882
|
lemmas = [],
|
|
833
883
|
theorems = [],
|
|
834
|
-
variables = [],
|
|
835
884
|
metaLemmas = [],
|
|
836
885
|
conjectures = [],
|
|
837
886
|
combinators = [],
|
|
838
887
|
typePrefixes = [],
|
|
839
888
|
constructors = [],
|
|
840
889
|
metatheorems = [],
|
|
841
|
-
|
|
842
|
-
|
|
890
|
+
declaredVariables = [],
|
|
891
|
+
declaredMetavariables = [],
|
|
892
|
+
nominalFileContext = FileContext.fromFile(NominalFileContext, file, lexer, parser, types, rules, axioms, lemmas, theorems, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, declaredVariables, declaredMetavariables, context);
|
|
843
893
|
|
|
844
894
|
return nominalFileContext;
|
|
845
895
|
}
|
|
@@ -856,15 +906,15 @@ export default class NominalFileContext extends FileContext {
|
|
|
856
906
|
axioms = null,
|
|
857
907
|
lemmas = null,
|
|
858
908
|
theorems = null,
|
|
859
|
-
variables = null,
|
|
860
909
|
metaLemmas = null,
|
|
861
910
|
conjectures = null,
|
|
862
911
|
combinators = null,
|
|
863
912
|
typePrefixes = null,
|
|
864
913
|
constructors = null,
|
|
865
914
|
metatheorems = null,
|
|
866
|
-
|
|
867
|
-
|
|
915
|
+
declaredVariables = null,
|
|
916
|
+
declaredMetavariables = null,
|
|
917
|
+
nominalFileContext = FileContext.fromJSON(NominalFileContext, json, lexer, parser, types, rules, axioms, lemmas, theorems, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, declaredVariables, declaredMetavariables, context);
|
|
868
918
|
|
|
869
919
|
return nominalFileContext;
|
|
870
920
|
}
|
package/src/context/liminal.js
CHANGED
|
@@ -85,9 +85,9 @@ export default class LiminalContext extends Context {
|
|
|
85
85
|
context.debug(`The '${substitutionString}' substitution has already been added to the liminal context.`);
|
|
86
86
|
} else {
|
|
87
87
|
this.substitutions.push(substitution);
|
|
88
|
-
|
|
89
|
-
context.debug(`...added the '${substitutionString}' substitution to the liminal context.`);
|
|
90
88
|
}
|
|
89
|
+
|
|
90
|
+
context.debug(`...added the '${substitutionString}' substitution to the liminal context.`);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
addSubstitutions(substitutions) {
|