ekms 9.6.1 → 9.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/common/actions.instance.json +99 -0
  2. package/common/actions.js +67 -0
  3. package/common/actions.test.json +656 -0
  4. package/common/angle.instance.json +20 -0
  5. package/common/colors.instance.json +0 -28
  6. package/common/compass.instance.json +15 -0
  7. package/common/dates.instance.json +0 -84
  8. package/common/dialogues.js +1 -1
  9. package/common/dimension.instance.json +96 -12
  10. package/common/dimension.js +12 -3
  11. package/common/drone.instance.json +10130 -1641
  12. package/common/drone.js +217 -71
  13. package/common/drone.test.json +192134 -3455
  14. package/common/drone_v1.instance.json +38 -31
  15. package/common/drone_v1.js +20 -15
  16. package/common/drone_v1.test.json +659 -389
  17. package/common/edible.instance.json +0 -128
  18. package/common/fastfood.instance.json +72 -392
  19. package/common/gdefaults.js +5 -1
  20. package/common/helpers/conjunction.js +9 -5
  21. package/common/helpers/drone.js +13 -1
  22. package/common/length.instance.json +135 -0
  23. package/common/nameable.js +63 -24
  24. package/common/nameable.test.json +3270 -3912
  25. package/common/ordinals.js +13 -0
  26. package/common/pipboy.instance.json +0 -56
  27. package/common/pressure.instance.json +20 -0
  28. package/common/properties.js +16 -6
  29. package/common/reports.instance.json +1 -1
  30. package/common/stm.js +119 -25
  31. package/common/temperature.instance.json +20 -0
  32. package/common/time.instance.json +45 -0
  33. package/common/time.test.json +3403 -0
  34. package/common/weight.instance.json +60 -0
  35. package/common/wp.instance.json +0 -56
  36. package/main.js +2 -0
  37. package/package.json +6 -2
@@ -31,6 +31,19 @@ const config = {
31
31
  bridge: "{ ...after[0], ordinal: before[0], modifiers: append(['ordinal'], after[0].modifiers) }"
32
32
  },
33
33
  ],
34
+ semantics: [
35
+ {
36
+ where: where(),
37
+ match: ({context}) => context.marker == 'mentions' && context.evaluate,
38
+ apply: async ({callId, _continue, toList, context, kms, e, log, retry}) => {
39
+ if (context.args?.context?.ordinal?.marker == 'ordinal' && context.args?.context?.ordinal?.value == -1) {
40
+ const lastN = context.args.context.quantity?.value || 1
41
+ context.args.lastN = lastN
42
+ }
43
+ _continue()
44
+ }
45
+ },
46
+ ],
34
47
  words: {
35
48
  "literals": {
36
49
  "first": [{"id": "ordinal", "initial": "{ value: 1, ordinal: true, instance: true }" }],
@@ -2001,20 +2001,6 @@
2001
2001
  0
2002
2002
  ]
2003
2003
  ],
2004
- [
2005
- [
2006
- "is",
2007
- 0
2008
- ],
2009
- [
2010
- "list",
2011
- 1
2012
- ],
2013
- [
2014
- "unknown",
2015
- 0
2016
- ]
2017
- ],
2018
2004
  [
2019
2005
  [
2020
2006
  "is",
@@ -12029,20 +12015,6 @@
12029
12015
  0
12030
12016
  ]
12031
12017
  ],
12032
- [
12033
- [
12034
- "is",
12035
- 0
12036
- ],
12037
- [
12038
- "list",
12039
- 1
12040
- ],
12041
- [
12042
- "unknown",
12043
- 0
12044
- ]
12045
- ],
12046
12018
  [
12047
12019
  [
12048
12020
  "is",
@@ -41501,34 +41473,6 @@
41501
41473
  0
41502
41474
  ]
41503
41475
  ],
41504
- [
41505
- [
41506
- "is",
41507
- 0
41508
- ],
41509
- [
41510
- "list",
41511
- 1
41512
- ],
41513
- [
41514
- "unknown",
41515
- 0
41516
- ]
41517
- ],
41518
- [
41519
- [
41520
- "is",
41521
- 0
41522
- ],
41523
- [
41524
- "list",
41525
- 1
41526
- ],
41527
- [
41528
- "unknown",
41529
- 0
41530
- ]
41531
- ],
41532
41476
  [
41533
41477
  [
41534
41478
  "is",
@@ -343,6 +343,11 @@
343
343
  "expression",
344
344
  false
345
345
  ],
346
+ [
347
+ "forQuantity",
348
+ "preposition",
349
+ false
350
+ ],
346
351
  [
347
352
  "forVariable",
348
353
  "preposition",
@@ -2535,6 +2540,11 @@
2535
2540
  "expression",
2536
2541
  false
2537
2542
  ],
2543
+ [
2544
+ "forQuantity",
2545
+ "preposition",
2546
+ false
2547
+ ],
2538
2548
  [
2539
2549
  "forVariable",
2540
2550
  "preposition",
@@ -5328,6 +5338,11 @@
5328
5338
  "expression",
5329
5339
  false
5330
5340
  ],
5341
+ [
5342
+ "forQuantity",
5343
+ "preposition",
5344
+ false
5345
+ ],
5331
5346
  [
5332
5347
  "forVariable",
5333
5348
  "preposition",
@@ -7914,6 +7929,11 @@
7914
7929
  "expression",
7915
7930
  false
7916
7931
  ],
7932
+ [
7933
+ "forQuantity",
7934
+ "preposition",
7935
+ false
7936
+ ],
7917
7937
  [
7918
7938
  "forVariable",
7919
7939
  "preposition",
@@ -1,4 +1,4 @@
1
- const { knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where, debug } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck, words } = require('./helpers')
3
3
  const dialogues = require('./dialogues')
4
4
  const meta = require('./meta')
@@ -484,6 +484,7 @@ const config = {
484
484
  context.evaluate &&
485
485
  !(context.types || []).includes('property') &&
486
486
  // !context.value && // greghere
487
+ !context.ordinal &&
487
488
  (api.objects && api.objects.children && api.objects.children[context.marker]) &&
488
489
  !context.evaluate.toConcept,
489
490
  apply: ({context, objects, api, km}) => {
@@ -624,7 +625,7 @@ const config = {
624
625
  !context.evaluate.toConcept, // && !context.value,
625
626
  // greghere
626
627
  // match: ({context, hierarchy}) => hierarchy.isA(context.marker, 'property') && context.evaluate,
627
- apply: async ({context, api, kms, objects, g, s, log}) => {
628
+ apply: async ({callId, context, api, kms, objects, g, s, log, mentions}) => {
628
629
  const toDo = [ ...context.objects ]
629
630
 
630
631
  async function toValue(objectContext) {
@@ -663,12 +664,21 @@ const config = {
663
664
  return
664
665
  }
665
666
 
667
+ let fromMentions
666
668
  if (!await api.knownProperty(currentContext, nextContext)) {
667
- context.verbatim = `There is no property ${await g({...nextContext, paraphrase: true})} of ${await g({...currentContext, paraphrase: true})}`
668
- return
669
+ fromMentions = await mentions({ context: nextContext, frameOfReference: currentContext })
670
+ if (!fromMentions) {
671
+ context.verbatim = `There is no property ${await g({...nextContext, paraphrase: true})} of ${await g({...currentContext, paraphrase: true})}`
672
+ return
673
+ }
674
+ }
675
+ if (fromMentions) {
676
+ currentContext = fromMentions
677
+ currentValue = fromMentions // TODO not sure what is right here so just do something and fix when actually needed SOP
678
+ } else {
679
+ currentContext = await api.getProperty(currentValue, nextValue, g)
680
+ currentValue = currentContext.value
669
681
  }
670
- currentContext = await api.getProperty(currentValue, nextValue, g)
671
- currentValue = currentContext.value
672
682
  }
673
683
  context.focusable = ['object[0]']
674
684
  context.evalue = currentContext
@@ -1343,7 +1343,7 @@
1343
1343
  }
1344
1344
  ]
1345
1345
  },
1346
- "trace": "\n\n>>>>>>>>>>>>> Counter 1\n summary\n\n 0. price/0 - \"price\"\n 1. list/0 - \"and\"\n 2. quantity/0 - \"quantity\"\n 3. is/0 - \"are\"\n 4. property/0 (dead) - \"properties\"\n\n details\n\n 0. Operator(price/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 0) - \"price\"\n {\n default: true\n marker: \n Operator(price/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. Operator(list/0, PASS, ['Selector(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\"), , same/(), [And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])]<==>[And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")), variables({}) bridge(bridge)) (1, 6) - \"and\"\n {\n default: true\n marker: \n Operator(list/0), passthrough\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n 2. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 8) - \"quantity\"\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. Operator(is/0, ['Selector(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\"), , [ListableType(Listable(Type(\\'queryable\\')))]<==>[ListableType(Listable(Type(\\'queryable\\')))], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")), variables({}) bridge(bridge)) (1, 13) - \"are\"\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. Operator(property/0, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (1, 18) - \"properties\"\n {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n value: \"property\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is ('price', 0)\n Context:\n {\n default: true\n marker: \n Operator(price/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n\n>>>>>>>>>>>>> Counter 2\n summary\n\n *0. price/1 (dead) - \"price\"\n 1. list/0 - \"and\"\n 2. quantity/0 - \"quantity\"\n 3. is/0 - \"are\"\n 4. property/0 (dead) - \"properties\"\n\n details\n\n 0. Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (2, 0) - \"price\"\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. Operator(list/0, PASS, ['Selector(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\"), , same/(), [And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])]<==>[And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")), variables({}) bridge(bridge)) (1, 6) - \"and\"\n {\n default: true\n marker: \n Operator(list/0), passthrough\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n 2. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 8) - \"quantity\"\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. Operator(is/0, ['Selector(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\"), , [ListableType(Listable(Type(\\'queryable\\')))]<==>[ListableType(Listable(Type(\\'queryable\\')))], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")), variables({}) bridge(bridge)) (1, 13) - \"are\"\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. Operator(property/0, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (1, 18) - \"properties\"\n {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n value: \"property\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is ('list', 0)\n Context:\n {\n default: true\n marker: \n Operator(list/0), passthrough\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n\n\n>>>>>>>>>>>>> Counter 3\n summary\n\n *0. list/1 - \"price and quantity\"\n 1. is/0 - \"are\"\n 2. property/0 (dead) - \"properties\"\n\n details\n\n 0. Operator(list/1, PASS, ['Selector(Bridge(\"{ ...operator, value: append(before, operator.value) }\"), , same/(), [And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge(\"{ ...operator, value: append(before, operator.value) }\")), variables({'found_types': ['quantity', 'price'], 'type': ['property', 'quantifier', 'queryable', 'quantity', 'theAble', 'number', 'listable', 'comparable']}) bridge(bridge)) (3, 0) - \"price and quantity\"\n {\n prioritized_by: [('list', 0)]\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['property', 'quantifier', 'queryable', 'quantity', 'theAble', 'number', 'listable', 'comparable']\n\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n 1. Operator(is/0, ['Selector(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\"), , [ListableType(Listable(Type(\\'queryable\\')))]<==>[ListableType(Listable(Type(\\'queryable\\')))], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")), variables({}) bridge(bridge)) (1, 13) - \"are\"\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 2. Operator(property/0, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (1, 18) - \"properties\"\n {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n value: \"property\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is ('is', 0)\n Context:\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n\n\n>>>>>>>>>>>>> Counter 4\n summary\n\n *0. is/1 - \"price and quantity are properties\"\n\n details\n\n 0. Operator(is/1, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({'found_types': []}) bridge(bridge)) (4, 0) - \"price and quantity are properties\"\n {\n prioritized_by: [('is', 0)]\n marker: \n Operator(is/1)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n Variables:\n found_types: []\n\n number: \"many\"\n one: \n {\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['property', 'quantifier', 'queryable', 'quantity', 'theAble', 'number', 'listable', 'comparable']\n\n number: \"many\"\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n 'quantity'\n, 'price'\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\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 {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n value: \"property\"\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is ('is', 1)\n Context:\n {\n prioritized_by: [('is', 0)]\n marker: \n Operator(is/1)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n Variables:\n found_types: []\n\n number: \"many\"\n one: \n {\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['property', 'quantifier', 'queryable', 'quantity', 'theAble', 'number', 'listable', 'comparable']\n\n number: \"many\"\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n 'quantity'\n, 'price'\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\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 {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n value: \"property\"\n word: \"properties\"\n }\n\n word: \"are\"\n }\n\n\n>>>>>>>>>>>>> Counter 5\n summary\n\n *0. is/2 (dead) - \"price and quantity are properties\"\n\n details\n\n 0. Operator(is/2, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (5, 0) - \"price and quantity are properties\"\n {\n prioritized_by: [('is', 1)]\n dead: true\n marker: \n Operator(is/2)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n number: \"many\"\n one: \n {\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['property', 'quantifier', 'queryable', 'quantity', 'theAble', 'number', 'listable', 'comparable']\n\n number: \"many\"\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n 'quantity'\n, 'price'\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\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 {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n value: \"property\"\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\n",
1346
+ "trace": "\n\n>>>>>>>>>>>>> Counter 1\n summary\n\n 0. price/0 - \"price\"\n 1. list/0 - \"and\"\n 2. quantity/0 - \"quantity\"\n 3. is/0 - \"are\"\n 4. property/0 (dead) - \"properties\"\n\n details\n\n 0. Operator(price/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 0) - \"price\"\n {\n default: true\n marker: \n Operator(price/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. Operator(list/0, PASS, ['Selector(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\"), , same/(), [And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])]<==>[And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")), variables({}) bridge(bridge)) (1, 5) - \"and\"\n {\n default: true\n marker: \n Operator(list/0), passthrough\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n 2. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 8) - \"quantity\"\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. Operator(is/0, ['Selector(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\"), , [ListableType(Listable(Type(\\'queryable\\')))]<==>[ListableType(Listable(Type(\\'queryable\\')))], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")), variables({}) bridge(bridge)) (1, 12) - \"are\"\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. Operator(property/0, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (1, 18) - \"properties\"\n {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n value: \"property\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is ('price', 0)\n Context:\n {\n default: true\n marker: \n Operator(price/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n\n>>>>>>>>>>>>> Counter 2\n summary\n\n *0. price/1 (dead) - \"price\"\n 1. list/0 - \"and\"\n 2. quantity/0 - \"quantity\"\n 3. is/0 - \"are\"\n 4. property/0 (dead) - \"properties\"\n\n details\n\n 0. Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (2, 0) - \"price\"\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 1. Operator(list/0, PASS, ['Selector(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\"), , same/(), [And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])]<==>[And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")), variables({}) bridge(bridge)) (1, 5) - \"and\"\n {\n default: true\n marker: \n Operator(list/0), passthrough\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n 2. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 8) - \"quantity\"\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n 3. Operator(is/0, ['Selector(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\"), , [ListableType(Listable(Type(\\'queryable\\')))]<==>[ListableType(Listable(Type(\\'queryable\\')))], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")), variables({}) bridge(bridge)) (1, 12) - \"are\"\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 4. Operator(property/0, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (1, 18) - \"properties\"\n {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n value: \"property\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is ('list', 0)\n Context:\n {\n default: true\n marker: \n Operator(list/0), passthrough\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), listable: true, isList: true, value: append(before, after) }\")\n\n range: {'start': 6, 'end': 8}\n text: \"and\"\n word: \"and\"\n }\n\n\n>>>>>>>>>>>>> Counter 3\n summary\n\n *0. list/1 - \"price and quantity\"\n 1. is/0 - \"are\"\n 2. property/0 (dead) - \"properties\"\n\n details\n\n 0. Operator(list/1, PASS, ['Selector(Bridge(\"{ ...operator, value: append(before, operator.value) }\"), , same/(), [And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'Listable(Unify(context.instance, variables.instance))\\'])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge(\"{ ...operator, value: append(before, operator.value) }\")), variables({'found_types': ['quantity', 'price'], 'type': ['queryable', 'quantifier', 'property', 'number', 'listable', 'quantity', 'theAble', 'comparable']}) bridge(bridge)) (3, 0) - \"price and quantity\"\n {\n prioritized_by: [('list', 0)]\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['queryable', 'quantifier', 'property', 'number', 'listable', 'quantity', 'theAble', 'comparable']\n\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\n range: {'start': 10, 'end': 17}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n ]\n word: \"and\"\n }\n 1. Operator(is/0, ['Selector(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\"), , [ListableType(Listable(Type(\\'queryable\\')))]<==>[ListableType(Listable(Type(\\'queryable\\')))], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")), variables({}) bridge(bridge)) (1, 12) - \"are\"\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n 2. Operator(property/0, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (1, 18) - \"properties\"\n {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n value: \"property\"\n word: \"properties\"\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is ('is', 0)\n Context:\n {\n marker: \n Operator(is/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n Left Selector: [ListableType(Listable(Type('queryable')))]\n Right Selector: [ListableType(Listable(Type('queryable')))]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), one: { number: operator.number, ...before[0] }, two: after[0] }\")\n\n number: \"many\"\n range: {'start': 19, 'end': 21}\n text: \"are\"\n word: \"are\"\n }\n\n\n>>>>>>>>>>>>> Counter 4\n summary\n\n *0. is/1 - \"price and quantity are properties\"\n\n details\n\n 0. Operator(is/1, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({'found_types': []}) bridge(bridge)) (4, 0) - \"price and quantity are properties\"\n {\n prioritized_by: [('is', 0)]\n marker: \n Operator(is/1)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n Variables:\n found_types: []\n\n number: \"many\"\n one: \n {\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['queryable', 'quantifier', 'property', 'number', 'listable', 'quantity', 'theAble', 'comparable']\n\n number: \"many\"\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n 'quantity'\n, 'price'\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\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 {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n value: \"property\"\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is ('is', 1)\n Context:\n {\n prioritized_by: [('is', 0)]\n marker: \n Operator(is/1)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n Variables:\n found_types: []\n\n number: \"many\"\n one: \n {\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['queryable', 'quantifier', 'property', 'number', 'listable', 'quantity', 'theAble', 'comparable']\n\n number: \"many\"\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n 'quantity'\n, 'price'\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\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 {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n value: \"property\"\n word: \"properties\"\n }\n\n word: \"are\"\n }\n\n\n>>>>>>>>>>>>> Counter 5\n summary\n\n *0. is/2 (dead) - \"price and quantity are properties\"\n\n details\n\n 0. Operator(is/2, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (5, 0) - \"price and quantity are properties\"\n {\n prioritized_by: [('is', 1)]\n dead: true\n marker: \n Operator(is/2)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n number: \"many\"\n one: \n {\n default: true\n isList: true\n listable: true\n marker: \n Operator(list/1), passthrough\n Selectors:\n [\n Selector, passthrough\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n , same/()\n Left Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'Listable(Unify(context.instance, variables.instance))'])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n found_types: ['quantity', 'price']\n type: ['queryable', 'quantifier', 'property', 'number', 'listable', 'quantity', 'theAble', 'comparable']\n\n number: \"many\"\n range: {'start': 0, 'end': 17}\n text: \"price and quantity\"\n types: [\n 'quantity'\n, 'price'\n ]\n value: [\n {\n prioritized_by: [('price', 0)]\n dead: true\n default: true\n marker: \n Operator(price/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 0, 'end': 4}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n {\n default: true\n marker: \n Operator(quantity/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator) }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...next(operator) }\")\n\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 {\n dead: true\n marker: \n Operator(property/0)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n range: {'start': 23, 'end': 32}\n text: \"properties\"\n types: [\n 'property'\n ]\n value: \"property\"\n word: \"properties\"\n }\n\n word: \"are\"\n }\n<<<<<<<<<<<<<\n",
1347
1347
  "contexts": [
1348
1348
  {
1349
1349
  "number": "many",