ekms 7.12.7 → 7.12.8-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. package/common/animals.instance.json +0 -44
  2. package/common/dialogues.js +106 -3
  3. package/common/dimension.instance.json +736 -62
  4. package/common/dimension.js +15 -7
  5. package/common/edible.instance.json +2 -190
  6. package/common/fastfood.instance.json +886 -922
  7. package/common/formulas.instance.json +992 -0
  8. package/common/formulas.js +18 -5
  9. package/common/formulas.test.json +1187 -3651
  10. package/common/length.instance.json +261 -505
  11. package/common/math.instance.json +1979 -1
  12. package/common/math.js +17 -5
  13. package/common/ordering.instance.json +0 -52
  14. package/common/pipboy.instance.json +23454 -1101
  15. package/common/pipboy.js +31 -4
  16. package/common/pipboy.test.json +13 -9
  17. package/common/pokemon.instance.json +0 -44
  18. package/common/pressure.instance.json +80 -0
  19. package/common/reports.instance.json +17 -1
  20. package/common/temperature.instance.json +80 -60
  21. package/common/ui.instance.json +8 -0
  22. package/common/weight.instance.json +272 -48
  23. package/main.js +0 -8
  24. package/package.json +4 -20
  25. package/common/dimensionTemplate.instance.json +0 -582
  26. package/common/dimensionTemplate.js +0 -35
  27. package/common/dimensionTemplate.test.json +0 -2
  28. package/common/formulasTemplate.instance.json +0 -483
  29. package/common/formulasTemplate.js +0 -30
  30. package/common/formulasTemplate.test.json +0 -2
  31. package/common/mathTemplate.instance.json +0 -1635
  32. package/common/mathTemplate.js +0 -32
  33. package/common/mathTemplate.test.json +0 -1422
  34. package/common/pipboyTemplate.instance.json +0 -17420
  35. package/common/pipboyTemplate.js +0 -48
  36. package/common/pipboyTemplate.test.json +0 -2
package/common/pipboy.js CHANGED
@@ -1,11 +1,12 @@
1
1
  const { Config, knowledgeModule, where, Digraph } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
- const base_km = require('./pipboyTemplate')
3
+ const hierarchy = require('./hierarchy')
4
4
  const countable = require('./countable')
5
5
  const math = require('./math')
6
6
  const comparable = require('./comparable')
7
7
  const help = require('./help')
8
8
  const pipboy_tests = require('./pipboy.test.json')
9
+ const instance = require('./pipboy.instance.json')
9
10
 
10
11
  // start/stop listening
11
12
  class API {
@@ -501,11 +502,36 @@ addWeapon('pistol')
501
502
  addWeapon('rifle')
502
503
  */
503
504
 
505
+ const template = {
506
+ queries: [
507
+ "pistols rifles grenades mines and shotguns are weapons",
508
+ "mines and grenades are explosives",
509
+ "explosives are weapons",
510
+ "pistols rifles and shotguns are firearms",
511
+ "firearms are weapons",
512
+ "hats armor and suits are clothes",
513
+ // "a rifle is a weapon",
514
+ //"a weapon is equipable and changeable"
515
+ "a weapon is equipable",
516
+ "clothes are wearable",
517
+ // "weapons are countable", TODO fix this
518
+ "edible is a concept",
519
+ "food is edible",
520
+ "drinks are drinkable",
521
+ "meat is food",
522
+ "vegetables and fruit are food",
523
+ "cola and pop are drinks",
524
+ "medicine and stimpaks are takeable",
525
+ "item modifies properties",
526
+ "damage luck hp rads value ap charisma range and accuracy are item properties",
527
+ configStruct,
528
+ ]
529
+ }
530
+
504
531
  const createConfig = () => {
505
- const config = new Config(configStruct, module)
532
+ const config = new Config({ name: 'pipboy' }, module)
506
533
  config.stop_auto_rebuild()
507
- //console.log('base_km.config.hierarchy', JSON.stringify(base_km.config.hierarchy, null, 2))
508
- config.add(base_km(), countable(), comparable(), help(), math())
534
+ config.add(hierarchy(), countable(), comparable(), help(), math())
509
535
  // console.log('config.config.hierarchy', JSON.stringify(config.config.hierarchy, null, 2))
510
536
  // console.log('config.hierarchy', config.hierarchy)
511
537
  config.api = api
@@ -517,6 +543,7 @@ knowledgeModule({
517
543
  module,
518
544
  description: 'Control a pipboy with speech',
519
545
  createConfig,
546
+ template: { template, instance },
520
547
  test: {
521
548
  name: './pipboy.test.json',
522
549
  contents: pipboy_tests,
@@ -24514,7 +24514,6 @@
24514
24514
  "help": "help2",
24515
24515
  "hierarchy": "hierarchy2",
24516
24516
  "math": "math2",
24517
- "mathTemplate": "mathTemplate2",
24518
24517
  "meta": "meta2",
24519
24518
  "numbers": "numbers2",
24520
24519
  "pipboy": "pipboy1",
@@ -24550,8 +24549,6 @@
24550
24549
  },
24551
24550
  "math2": {
24552
24551
  },
24553
- "mathTemplate2": {
24554
- },
24555
24552
  "meta2": {
24556
24553
  },
24557
24554
  "numbers2": {
@@ -24646,7 +24643,8 @@
24646
24643
  "whose"
24647
24644
  ],
24648
24645
  "preposition": [
24649
- "between"
24646
+ "between",
24647
+ "to"
24650
24648
  ],
24651
24649
  "pronoun": [
24652
24650
  "it",
@@ -24743,13 +24741,14 @@
24743
24741
  "whatAble",
24744
24742
  "is",
24745
24743
  "toAble",
24744
+ "to",
24746
24745
  "noun",
24747
24746
  "thisitthat",
24748
24747
  "reason",
24749
24748
  "that",
24749
+ "number",
24750
24750
  "orAble",
24751
24751
  "ifAble",
24752
- "number",
24753
24752
  "*",
24754
24753
  "mathematical_operator",
24755
24754
  "+",
@@ -24966,6 +24965,9 @@
24966
24965
  "thisitthat": [
24967
24966
  "queryable"
24968
24967
  ],
24968
+ "to": [
24969
+ "preposition"
24970
+ ],
24969
24971
  "unknown": [
24970
24972
  "hierarchyAble",
24971
24973
  "object",
@@ -25136,6 +25138,8 @@
25136
25138
  },
25137
25139
  "thisitthat": {
25138
25140
  },
25141
+ "to": {
25142
+ },
25139
25143
  "toAble": {
25140
25144
  },
25141
25145
  "unknown": {
@@ -25234,8 +25238,8 @@
25234
25238
  "word": "apply"
25235
25239
  },
25236
25240
  "generatedParenthesized": "",
25237
- "paraphrases": "apply four stimpacks",
25238
- "paraphrasesParenthesized": "(apply ((four) (stimpacks)))",
25241
+ "paraphrases": "apply 4 stimpacks",
25242
+ "paraphrasesParenthesized": "(apply ((4) (stimpacks)))",
25239
25243
  "responses": [
25240
25244
  ""
25241
25245
  ]
@@ -25758,10 +25762,10 @@
25758
25762
  ]
25759
25763
  },
25760
25764
  "paraphrases": [
25761
- "apply four stimpacks"
25765
+ "apply 4 stimpacks"
25762
25766
  ],
25763
25767
  "paraphrasesParenthesized": [
25764
- "(apply ((four) (stimpacks)))"
25768
+ "(apply ((4) (stimpacks)))"
25765
25769
  ],
25766
25770
  "query": "apply four stimpacks",
25767
25771
  "responses": [
@@ -1783,28 +1783,6 @@
1783
1783
  1
1784
1784
  ]
1785
1785
  ],
1786
- [
1787
- [
1788
- "is",
1789
- 0
1790
- ],
1791
- [
1792
- "list",
1793
- 0
1794
- ],
1795
- [
1796
- "pokemon",
1797
- 0
1798
- ],
1799
- [
1800
- "unknown",
1801
- 0
1802
- ],
1803
- [
1804
- "unknown",
1805
- 1
1806
- ]
1807
- ],
1808
1786
  [
1809
1787
  [
1810
1788
  "is",
@@ -11691,28 +11669,6 @@
11691
11669
  1
11692
11670
  ]
11693
11671
  ],
11694
- [
11695
- [
11696
- "is",
11697
- 0
11698
- ],
11699
- [
11700
- "list",
11701
- 0
11702
- ],
11703
- [
11704
- "pokemon",
11705
- 0
11706
- ],
11707
- [
11708
- "unknown",
11709
- 0
11710
- ],
11711
- [
11712
- "unknown",
11713
- 1
11714
- ]
11715
- ],
11716
11672
  [
11717
11673
  [
11718
11674
  "is",
@@ -192,6 +192,10 @@
192
192
  "convertToUnits",
193
193
  "queryable"
194
194
  ],
195
+ [
196
+ "convertToUnits",
197
+ "testingValue"
198
+ ],
195
199
  [
196
200
  "countable",
197
201
  "hierarchyAble"
@@ -344,6 +348,10 @@
344
348
  "it",
345
349
  "toAble"
346
350
  ],
351
+ [
352
+ "length",
353
+ "dimension"
354
+ ],
347
355
  [
348
356
  "lowest",
349
357
  "condition"
@@ -572,6 +580,10 @@
572
580
  "reason",
573
581
  "theAble"
574
582
  ],
583
+ [
584
+ "testingValue",
585
+ "testingValue"
586
+ ],
575
587
  [
576
588
  "that",
577
589
  "thisitthat"
@@ -696,9 +708,17 @@
696
708
  "whose",
697
709
  "object"
698
710
  ],
711
+ [
712
+ "x",
713
+ "number"
714
+ ],
699
715
  [
700
716
  "xfx",
701
717
  "queryable"
718
+ ],
719
+ [
720
+ "y",
721
+ "number"
702
722
  ]
703
723
  ],
704
724
  "metadata": {
@@ -1128,6 +1148,10 @@
1128
1148
  "convertToUnits",
1129
1149
  "queryable"
1130
1150
  ],
1151
+ [
1152
+ "convertToUnits",
1153
+ "testingValue"
1154
+ ],
1131
1155
  [
1132
1156
  "countable",
1133
1157
  "hierarchyAble"
@@ -1280,6 +1304,10 @@
1280
1304
  "it",
1281
1305
  "toAble"
1282
1306
  ],
1307
+ [
1308
+ "length",
1309
+ "dimension"
1310
+ ],
1283
1311
  [
1284
1312
  "lowest",
1285
1313
  "condition"
@@ -1540,6 +1568,10 @@
1540
1568
  "reason",
1541
1569
  "theAble"
1542
1570
  ],
1571
+ [
1572
+ "testingValue",
1573
+ "testingValue"
1574
+ ],
1543
1575
  [
1544
1576
  "that",
1545
1577
  "thisitthat"
@@ -1664,9 +1696,17 @@
1664
1696
  "whose",
1665
1697
  "object"
1666
1698
  ],
1699
+ [
1700
+ "x",
1701
+ "number"
1702
+ ],
1667
1703
  [
1668
1704
  "xfx",
1669
1705
  "queryable"
1706
+ ],
1707
+ [
1708
+ "y",
1709
+ "number"
1670
1710
  ]
1671
1711
  ],
1672
1712
  "metadata": {
@@ -2443,6 +2483,10 @@
2443
2483
  "convertToUnits",
2444
2484
  "queryable"
2445
2485
  ],
2486
+ [
2487
+ "convertToUnits",
2488
+ "testingValue"
2489
+ ],
2446
2490
  [
2447
2491
  "countable",
2448
2492
  "hierarchyAble"
@@ -2595,6 +2639,10 @@
2595
2639
  "it",
2596
2640
  "toAble"
2597
2641
  ],
2642
+ [
2643
+ "length",
2644
+ "dimension"
2645
+ ],
2598
2646
  [
2599
2647
  "lowest",
2600
2648
  "condition"
@@ -2887,6 +2935,10 @@
2887
2935
  "reason",
2888
2936
  "theAble"
2889
2937
  ],
2938
+ [
2939
+ "testingValue",
2940
+ "testingValue"
2941
+ ],
2890
2942
  [
2891
2943
  "that",
2892
2944
  "thisitthat"
@@ -3011,9 +3063,17 @@
3011
3063
  "whose",
3012
3064
  "object"
3013
3065
  ],
3066
+ [
3067
+ "x",
3068
+ "number"
3069
+ ],
3014
3070
  [
3015
3071
  "xfx",
3016
3072
  "queryable"
3073
+ ],
3074
+ [
3075
+ "y",
3076
+ "number"
3017
3077
  ]
3018
3078
  ],
3019
3079
  "metadata": {
@@ -3514,6 +3574,10 @@
3514
3574
  "convertToUnits",
3515
3575
  "queryable"
3516
3576
  ],
3577
+ [
3578
+ "convertToUnits",
3579
+ "testingValue"
3580
+ ],
3517
3581
  [
3518
3582
  "countable",
3519
3583
  "hierarchyAble"
@@ -3666,6 +3730,10 @@
3666
3730
  "it",
3667
3731
  "toAble"
3668
3732
  ],
3733
+ [
3734
+ "length",
3735
+ "dimension"
3736
+ ],
3669
3737
  [
3670
3738
  "lowest",
3671
3739
  "condition"
@@ -3958,6 +4026,10 @@
3958
4026
  "reason",
3959
4027
  "theAble"
3960
4028
  ],
4029
+ [
4030
+ "testingValue",
4031
+ "testingValue"
4032
+ ],
3961
4033
  [
3962
4034
  "that",
3963
4035
  "thisitthat"
@@ -4082,9 +4154,17 @@
4082
4154
  "whose",
4083
4155
  "object"
4084
4156
  ],
4157
+ [
4158
+ "x",
4159
+ "number"
4160
+ ],
4085
4161
  [
4086
4162
  "xfx",
4087
4163
  "queryable"
4164
+ ],
4165
+ [
4166
+ "y",
4167
+ "number"
4088
4168
  ]
4089
4169
  ],
4090
4170
  "metadata": {
@@ -686,9 +686,17 @@
686
686
  "whose",
687
687
  "object"
688
688
  ],
689
+ [
690
+ "x",
691
+ "number"
692
+ ],
689
693
  [
690
694
  "xfx",
691
695
  "queryable"
696
+ ],
697
+ [
698
+ "y",
699
+ "number"
692
700
  ]
693
701
  ],
694
702
  "metadata": {
@@ -792,7 +800,7 @@
792
800
  }
793
801
  ]
794
802
  },
795
- "trace": "\n\n>>>>>>>>>>>>> Counter 1\n 0. price/0 (1, 0) - \"price\"\n {\n default: true\n marker: Operator(price/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. list/0 (1, 1) - \"and\"\n {\n default: true\n marker: Operator(list/0, PASS, [\"Selector(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }'), , same/(), [Type(variable: 'type')]<==>[Type(variable: 'type')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }')), variables({}) bridge(bridge))\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n 2. quantity/0 (1, 2) - \"quantity\"\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. property/0 (1, 5) - \"properties\"\n {\n default: true\n marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is Context({default: True, marker: Operator(price/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), range: {'start': 0, 'end': 4}, text: price, value: price, word: price})\n\n>>>>>>>>>>>>> Counter 2\n *0. price/1 (dead) (2, 0) - \"price\"\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. list/0 (1, 1) - \"and\"\n {\n default: true\n marker: Operator(list/0, PASS, [\"Selector(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }'), , same/(), [Type(variable: 'type')]<==>[Type(variable: 'type')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge))\n range: {'start': 6, 'end': 8}\n text: \"and\"\n types: [\n ]\n word: \"and\"\n }\n 2. quantity/0 (1, 2) - \"quantity\"\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. property/0 (1, 5) - \"properties\"\n {\n default: true\n marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is Context({default: True, marker: Operator(list/0, PASS, [\"Selector(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }'), , same/(), [Type(variable: 'type')]<==>[Type(variable: 'type')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge)), range: {'start': 6, 'end': 8}, text: and, types: [], word: and})\n\n>>>>>>>>>>>>> Counter 3\n *0. list/1 (3, 0) - \"price and quantity\"\n {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge))\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n 1. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 2. property/0 (1, 5) - \"properties\"\n {\n default: true\n marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=2) is Context({default: True, marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), range: {'start': 23, 'end': 32}, text: properties, word: properties})\n\n>>>>>>>>>>>>> Counter 4\n 0. list/1 (3, 0) - \"price and quantity\"\n {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge))\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n 1. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n *2. property/1 (dead) (2, 1) - \"properties\"\n {\n dead: true\n default: true\n marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is Context({marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge)), number: many, range: {'start': 19, 'end': 21}, text: are, word: are})\n\n>>>>>>>>>>>>> Counter 5\n *0. is/1 (4, 0) - \"price and quantity are properties\"\n {\n marker: Operator(is/1, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n number: \"many\"\n one: {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge))\n number: \"many\"\n range: {'start': 0, 'end': 32}\n text: \"price and quantity\"\n types: [\n 'price'\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n\n range: {'start': 0, 'end': 32}\n text: \"price and quantity are properties\"\n two: {\n dead: true\n default: true\n marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is Context({marker: Operator(is/1, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), number: many, one: Context({default: True, isList: True, listable: True, marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge)), number: many, range: {'start': 0, 'end': 32}, text: price and quantity, types: ['price'], value: [Context({dead: True, default: True, marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)), range: {'start': 0, 'end': 4}, text: price, value: price, word: price}), Context({default: True, marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), range: {'start': 10, 'end': 17}, text: quantity, value: quantity, word: quantity})], word: and}), range: {'start': 0, 'end': 32}, text: price and quantity are properties, two: Context({dead: True, default: True, marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)), range: {'start': 23, 'end': 32}, text: properties, types: ['property'], word: properties}), word: are})\n\n>>>>>>>>>>>>> Counter 6\n *0. is/2 (dead) (5, 0) - \"price and quantity are properties\"\n {\n dead: true\n marker: Operator(is/2, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n number: \"many\"\n one: {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['hierarchyAble', 'queryable', 'quantifier', 'property', 'object', 'number', 'quantity', 'unknown', 'theAble', 'notAble']}) bridge(bridge))\n number: \"many\"\n range: {'start': 0, 'end': 32}\n text: \"price and quantity\"\n types: [\n 'price'\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n\n range: {'start': 0, 'end': 32}\n text: \"price and quantity are properties\"\n two: {\n dead: true\n default: true\n marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\n",
803
+ "trace": "\n\n>>>>>>>>>>>>> Counter 1\n 0. price/0 (1, 0) - \"price\"\n {\n default: true\n marker: Operator(price/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. list/0 (1, 1) - \"and\"\n {\n default: true\n marker: Operator(list/0, PASS, [\"Selector(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }'), , same/(), [Type(variable: 'type')]<==>[Type(variable: 'type')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }')), variables({}) bridge(bridge))\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n 2. quantity/0 (1, 2) - \"quantity\"\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. property/0 (1, 5) - \"properties\"\n {\n default: true\n marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is Context({default: True, marker: Operator(price/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), range: {'start': 0, 'end': 4}, text: price, value: price, word: price})\n\n>>>>>>>>>>>>> Counter 2\n *0. price/1 (dead) (2, 0) - \"price\"\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. list/0 (1, 1) - \"and\"\n {\n default: true\n marker: Operator(list/0, PASS, [\"Selector(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }'), , same/(), [Type(variable: 'type')]<==>[Type(variable: 'type')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge))\n range: {'start': 6, 'end': 8}\n text: \"and\"\n types: [\n ]\n word: \"and\"\n }\n 2. quantity/0 (1, 2) - \"quantity\"\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. property/0 (1, 5) - \"properties\"\n {\n default: true\n marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is Context({default: True, marker: Operator(list/0, PASS, [\"Selector(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }'), , same/(), [Type(variable: 'type')]<==>[Type(variable: 'type')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), listable: true, isList: true, value: append(before, after) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge)), range: {'start': 6, 'end': 8}, text: and, types: [], word: and})\n\n>>>>>>>>>>>>> Counter 3\n *0. list/1 (3, 0) - \"price and quantity\"\n {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge))\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n 1. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 2. property/0 (1, 5) - \"properties\"\n {\n default: true\n marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=2) is Context({default: True, marker: Operator(property/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), range: {'start': 23, 'end': 32}, text: properties, word: properties})\n\n>>>>>>>>>>>>> Counter 4\n 0. list/1 (3, 0) - \"price and quantity\"\n {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge))\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n 1. is/0 (1, 3) - \"are\"\n {\n marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge))\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n *2. property/1 (dead) (2, 1) - \"properties\"\n {\n dead: true\n default: true\n marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is Context({marker: Operator(is/0, [\"Selector(Bridge('{ ...next(operator), one: after[0], two: after[1], query: true }'), , []<==>[Type('queryable'), Type('queryable')], bridge(queryBridge))\", \"Selector(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }'), , [Type('queryable')]<==>[Type('queryable')], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }')), variables({}) bridge(bridge)), number: many, range: {'start': 19, 'end': 21}, text: are, word: are})\n\n>>>>>>>>>>>>> Counter 5\n *0. is/1 (4, 0) - \"price and quantity are properties\"\n {\n marker: Operator(is/1, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n number: \"many\"\n one: {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge))\n number: \"many\"\n range: {'start': 0, 'end': 32}\n text: \"price and quantity\"\n types: [\n 'price'\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n\n range: {'start': 0, 'end': 32}\n text: \"price and quantity are properties\"\n two: {\n dead: true\n default: true\n marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is Context({marker: Operator(is/1, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), number: many, one: Context({default: True, isList: True, listable: True, marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge)), number: many, range: {'start': 0, 'end': 32}, text: price and quantity, types: ['price'], value: [Context({dead: True, default: True, marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)), range: {'start': 0, 'end': 4}, text: price, value: price, word: price}), Context({default: True, marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge)), range: {'start': 10, 'end': 17}, text: quantity, value: quantity, word: quantity})], word: and}), range: {'start': 0, 'end': 32}, text: price and quantity are properties, two: Context({dead: True, default: True, marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)), range: {'start': 23, 'end': 32}, text: properties, types: ['property'], word: properties}), word: are})\n\n>>>>>>>>>>>>> Counter 6\n *0. is/2 (dead) (5, 0) - \"price and quantity are properties\"\n {\n dead: true\n marker: Operator(is/2, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n number: \"many\"\n one: {\n default: true\n isList: true\n listable: true\n marker: Operator(list/1, PASS, ['Selector(Bridge(\\'{ ...operator, value: append(before, operator.value) }\\'), , same/(), [And([\"Type(variable: \\'type\\')\", \"Listable(Unify(Property((\\'context\\', \\'instance\\')), Property((\\'variables\\', \\'instance\\'))))\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge('{ ...operator, value: append(before, operator.value) }')), variables({'type': ['queryable', 'theAble', 'property', 'quantity', 'quantifier', 'unknown', 'number', 'object', 'hierarchyAble', 'notAble']}) bridge(bridge))\n number: \"many\"\n range: {'start': 0, 'end': 32}\n text: \"price and quantity\"\n types: [\n 'price'\n ]\n value: [\n {\n dead: true\n default: true\n marker: Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: Operator(quantity/0, [\"Selector(Bridge('{ ...next(operator) }'), , []<==>[], bridge(bridge))\"], evaluator(Bridge('{ ...next(operator) }')), variables({}) bridge(bridge))\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n\n range: {'start': 0, 'end': 32}\n text: \"price and quantity are properties\"\n two: {\n dead: true\n default: true\n marker: Operator(property/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge))\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\n",
796
804
  "contexts": [
797
805
  {
798
806
  "number": "many",
@@ -1647,9 +1655,17 @@
1647
1655
  "whose",
1648
1656
  "object"
1649
1657
  ],
1658
+ [
1659
+ "x",
1660
+ "number"
1661
+ ],
1650
1662
  [
1651
1663
  "xfx",
1652
1664
  "queryable"
1665
+ ],
1666
+ [
1667
+ "y",
1668
+ "number"
1653
1669
  ]
1654
1670
  ],
1655
1671
  "metadata": {