ekms 9.6.3-beta.17 → 9.6.3-beta.19

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.
@@ -76,7 +76,7 @@ const config = {
76
76
 
77
77
  {
78
78
  where: where(),
79
- match: ({context, callId}) => context.listable,
79
+ match: ({context, callId}) => context.listable && context.value,
80
80
  apply: ({context, gs}) => {
81
81
  return gs(context.value, ' ', ' ' + context.word + ' ')
82
82
  },
@@ -656,7 +656,7 @@
656
656
  "timeAtPoint": "(@<= 'timeAtPoint')"
657
657
  }
658
658
  },
659
- "semantic": "async ({context, remember, api, e, fragments, toFinalValue}) => {\n let time = context.time \n if (!time) {\n return\n }\n debugger\n if (time.marker == 'forQuantity') {\n time = time.quantity\n }\n const instantiation = await fragments(\"quantity in seconds\", { quantity: time})\n const result = await e(instantiation)\n const seconds = toFinalValue(toFinalValue(result).amount)\n context.pauseSeconds = seconds\n remember(context)\n api.pause(seconds)\n }"
659
+ "semantic": "async ({context, remember, api, e, fragments, toFinalValue}) => {\n let time = context.time \n if (!time) {\n return\n }\n if (time.marker == 'forQuantity') {\n time = time.quantity\n }\n const instantiation = await fragments(\"quantity in seconds\", { quantity: time})\n const result = await e(instantiation)\n const seconds = toFinalValue(toFinalValue(result).amount)\n context.pauseSeconds = seconds\n remember(context)\n api.pause(seconds)\n }"
660
660
  },
661
661
  {
662
662
  "id": "pause",
@@ -51118,6 +51118,24 @@
51118
51118
  0
51119
51119
  ]
51120
51120
  ],
51121
+ [
51122
+ [
51123
+ "is",
51124
+ 0
51125
+ ],
51126
+ [
51127
+ "list",
51128
+ 1
51129
+ ],
51130
+ [
51131
+ "point",
51132
+ 0
51133
+ ],
51134
+ [
51135
+ "unknown",
51136
+ 0
51137
+ ]
51138
+ ],
51121
51139
  [
51122
51140
  [
51123
51141
  "is",
@@ -97748,6 +97766,24 @@
97748
97766
  0
97749
97767
  ]
97750
97768
  ],
97769
+ [
97770
+ [
97771
+ "is",
97772
+ 0
97773
+ ],
97774
+ [
97775
+ "list",
97776
+ 1
97777
+ ],
97778
+ [
97779
+ "point",
97780
+ 0
97781
+ ],
97782
+ [
97783
+ "unknown",
97784
+ 0
97785
+ ]
97786
+ ],
97751
97787
  [
97752
97788
  [
97753
97789
  "is",
@@ -93420,6 +93420,11 @@
93420
93420
  "context_index": 1,
93421
93421
  "topLevel": true,
93422
93422
  "context_id": 2,
93423
+ "control": {
93424
+ "seen": [],
93425
+ "nextId": 2
93426
+ },
93427
+ "control_id": 1,
93423
93428
  "touchedBy": [
93424
93429
  "fastfood#call2"
93425
93430
  ]
@@ -93651,24 +93656,6 @@
93651
93656
  0
93652
93657
  ]
93653
93658
  ],
93654
- [
93655
- [
93656
- "list",
93657
- 1
93658
- ],
93659
- [
93660
- "modifies",
93661
- 0
93662
- ],
93663
- [
93664
- "strawberry",
93665
- 0
93666
- ],
93667
- [
93668
- "unknown",
93669
- 0
93670
- ]
93671
- ],
93672
93659
  [
93673
93660
  [
93674
93661
  "list",
@@ -340122,24 +340109,6 @@
340122
340109
  0
340123
340110
  ]
340124
340111
  ],
340125
- [
340126
- [
340127
- "a",
340128
- 0
340129
- ],
340130
- [
340131
- "go_wrap",
340132
- 0
340133
- ],
340134
- [
340135
- "is",
340136
- 0
340137
- ],
340138
- [
340139
- "sandwich",
340140
- 0
340141
- ]
340142
- ],
340143
340112
  [
340144
340113
  [
340145
340114
  "go_wrap",
@@ -358687,80 +358656,6 @@
358687
358656
  0
358688
358657
  ]
358689
358658
  ],
358690
- [
358691
- [
358692
- "breakfast",
358693
- 0
358694
- ],
358695
- [
358696
- "breakfast_baconator",
358697
- 0
358698
- ],
358699
- [
358700
- "chicken",
358701
- 0
358702
- ],
358703
- [
358704
- "comma",
358705
- 0
358706
- ],
358707
- [
358708
- "double",
358709
- 0
358710
- ],
358711
- [
358712
- "egg",
358713
- 0
358714
- ],
358715
- [
358716
- "french",
358717
- 0
358718
- ],
358719
- [
358720
- "french_toast_sandwich",
358721
- 0
358722
- ],
358723
- [
358724
- "is",
358725
- 0
358726
- ],
358727
- [
358728
- "list",
358729
- 0
358730
- ],
358731
- [
358732
- "meal",
358733
- 0
358734
- ],
358735
- [
358736
- "muffin",
358737
- 0
358738
- ],
358739
- [
358740
- "oatmeal",
358741
- 0
358742
- ],
358743
- [
358744
- "on",
358745
- 0
358746
- ],
358747
- [
358748
- "pancake",
358749
- 0
358750
- ],
358751
- [
358752
- "platter",
358753
- 0
358754
- ],
358755
- [
358756
- "sausage",
358757
- 0
358758
- ],
358759
- [
358760
- "toast",
358761
- 0
358762
- ]
358763
- ],
358764
358659
  [
358765
358660
  [
358766
358661
  "breakfast",
@@ -358979,76 +358874,6 @@
358979
358874
  0
358980
358875
  ]
358981
358876
  ],
358982
- [
358983
- [
358984
- "breakfast",
358985
- 0
358986
- ],
358987
- [
358988
- "breakfast_baconator",
358989
- 0
358990
- ],
358991
- [
358992
- "chicken_on_french_toast",
358993
- 0
358994
- ],
358995
- [
358996
- "comma",
358997
- 0
358998
- ],
358999
- [
359000
- "double",
359001
- 0
359002
- ],
359003
- [
359004
- "egg_muffin",
359005
- 0
359006
- ],
359007
- [
359008
- "french",
359009
- 0
359010
- ],
359011
- [
359012
- "french_toast_sandwich",
359013
- 0
359014
- ],
359015
- [
359016
- "is",
359017
- 0
359018
- ],
359019
- [
359020
- "list",
359021
- 0
359022
- ],
359023
- [
359024
- "meal",
359025
- 0
359026
- ],
359027
- [
359028
- "muffin",
359029
- 0
359030
- ],
359031
- [
359032
- "oatmeal",
359033
- 0
359034
- ],
359035
- [
359036
- "pancake",
359037
- 0
359038
- ],
359039
- [
359040
- "pancake_platter",
359041
- 0
359042
- ],
359043
- [
359044
- "sausage",
359045
- 0
359046
- ],
359047
- [
359048
- "toast",
359049
- 0
359050
- ]
359051
- ],
359052
358877
  [
359053
358878
  [
359054
358879
  "breakfast",
@@ -613590,6 +613415,60 @@
613590
613415
  0
613591
613416
  ]
613592
613417
  ],
613418
+ [
613419
+ [
613420
+ "bacon",
613421
+ 0
613422
+ ],
613423
+ [
613424
+ "cheeseburger",
613425
+ 0
613426
+ ],
613427
+ [
613428
+ "chicken",
613429
+ 0
613430
+ ],
613431
+ [
613432
+ "club",
613433
+ 0
613434
+ ],
613435
+ [
613436
+ "comma",
613437
+ 0
613438
+ ],
613439
+ [
613440
+ "crispy",
613441
+ 0
613442
+ ],
613443
+ [
613444
+ "go",
613445
+ 0
613446
+ ],
613447
+ [
613448
+ "is",
613449
+ 0
613450
+ ],
613451
+ [
613452
+ "junior",
613453
+ 0
613454
+ ],
613455
+ [
613456
+ "list",
613457
+ 0
613458
+ ],
613459
+ [
613460
+ "meal",
613461
+ 0
613462
+ ],
613463
+ [
613464
+ "value",
613465
+ 0
613466
+ ],
613467
+ [
613468
+ "wrap",
613469
+ 0
613470
+ ]
613471
+ ],
613593
613472
  [
613594
613473
  [
613595
613474
  "bacon_cheeseburger",
@@ -613992,6 +613871,24 @@
613992
613871
  0
613993
613872
  ]
613994
613873
  ],
613874
+ [
613875
+ [
613876
+ "is",
613877
+ 0
613878
+ ],
613879
+ [
613880
+ "list",
613881
+ 1
613882
+ ],
613883
+ [
613884
+ "meal",
613885
+ 0
613886
+ ],
613887
+ [
613888
+ "value",
613889
+ 0
613890
+ ]
613891
+ ],
613995
613892
  [
613996
613893
  [
613997
613894
  "is",
@@ -627659,24 +627556,6 @@
627659
627556
  0
627660
627557
  ]
627661
627558
  ],
627662
- [
627663
- [
627664
- "a",
627665
- 0
627666
- ],
627667
- [
627668
- "go_wrap",
627669
- 0
627670
- ],
627671
- [
627672
- "is",
627673
- 0
627674
- ],
627675
- [
627676
- "sandwich",
627677
- 0
627678
- ]
627679
- ],
627680
627559
  [
627681
627560
  [
627682
627561
  "a",
@@ -628179,6 +628058,60 @@
628179
628058
  0
628180
628059
  ]
628181
628060
  ],
628061
+ [
628062
+ [
628063
+ "bacon",
628064
+ 0
628065
+ ],
628066
+ [
628067
+ "cheeseburger",
628068
+ 0
628069
+ ],
628070
+ [
628071
+ "chicken",
628072
+ 0
628073
+ ],
628074
+ [
628075
+ "club",
628076
+ 0
628077
+ ],
628078
+ [
628079
+ "comma",
628080
+ 0
628081
+ ],
628082
+ [
628083
+ "crispy",
628084
+ 0
628085
+ ],
628086
+ [
628087
+ "go",
628088
+ 0
628089
+ ],
628090
+ [
628091
+ "is",
628092
+ 0
628093
+ ],
628094
+ [
628095
+ "junior",
628096
+ 0
628097
+ ],
628098
+ [
628099
+ "list",
628100
+ 0
628101
+ ],
628102
+ [
628103
+ "meal",
628104
+ 0
628105
+ ],
628106
+ [
628107
+ "value",
628108
+ 0
628109
+ ],
628110
+ [
628111
+ "wrap",
628112
+ 0
628113
+ ]
628114
+ ],
628182
628115
  [
628183
628116
  [
628184
628117
  "bacon",
@@ -629467,80 +629400,6 @@
629467
629400
  0
629468
629401
  ]
629469
629402
  ],
629470
- [
629471
- [
629472
- "breakfast",
629473
- 0
629474
- ],
629475
- [
629476
- "breakfast_baconator",
629477
- 0
629478
- ],
629479
- [
629480
- "chicken",
629481
- 0
629482
- ],
629483
- [
629484
- "comma",
629485
- 0
629486
- ],
629487
- [
629488
- "double",
629489
- 0
629490
- ],
629491
- [
629492
- "egg",
629493
- 0
629494
- ],
629495
- [
629496
- "french",
629497
- 0
629498
- ],
629499
- [
629500
- "french_toast_sandwich",
629501
- 0
629502
- ],
629503
- [
629504
- "is",
629505
- 0
629506
- ],
629507
- [
629508
- "list",
629509
- 0
629510
- ],
629511
- [
629512
- "meal",
629513
- 0
629514
- ],
629515
- [
629516
- "muffin",
629517
- 0
629518
- ],
629519
- [
629520
- "oatmeal",
629521
- 0
629522
- ],
629523
- [
629524
- "on",
629525
- 0
629526
- ],
629527
- [
629528
- "pancake",
629529
- 0
629530
- ],
629531
- [
629532
- "platter",
629533
- 0
629534
- ],
629535
- [
629536
- "sausage",
629537
- 0
629538
- ],
629539
- [
629540
- "toast",
629541
- 0
629542
- ]
629543
- ],
629544
629403
  [
629545
629404
  [
629546
629405
  "breakfast",
@@ -629759,76 +629618,6 @@
629759
629618
  0
629760
629619
  ]
629761
629620
  ],
629762
- [
629763
- [
629764
- "breakfast",
629765
- 0
629766
- ],
629767
- [
629768
- "breakfast_baconator",
629769
- 0
629770
- ],
629771
- [
629772
- "chicken_on_french_toast",
629773
- 0
629774
- ],
629775
- [
629776
- "comma",
629777
- 0
629778
- ],
629779
- [
629780
- "double",
629781
- 0
629782
- ],
629783
- [
629784
- "egg_muffin",
629785
- 0
629786
- ],
629787
- [
629788
- "french",
629789
- 0
629790
- ],
629791
- [
629792
- "french_toast_sandwich",
629793
- 0
629794
- ],
629795
- [
629796
- "is",
629797
- 0
629798
- ],
629799
- [
629800
- "list",
629801
- 0
629802
- ],
629803
- [
629804
- "meal",
629805
- 0
629806
- ],
629807
- [
629808
- "muffin",
629809
- 0
629810
- ],
629811
- [
629812
- "oatmeal",
629813
- 0
629814
- ],
629815
- [
629816
- "pancake",
629817
- 0
629818
- ],
629819
- [
629820
- "pancake_platter",
629821
- 0
629822
- ],
629823
- [
629824
- "sausage",
629825
- 0
629826
- ],
629827
- [
629828
- "toast",
629829
- 0
629830
- ]
629831
- ],
629832
629621
  [
629833
629622
  [
629834
629623
  "breakfast",
@@ -632953,6 +632742,24 @@
632953
632742
  0
632954
632743
  ]
632955
632744
  ],
632745
+ [
632746
+ [
632747
+ "is",
632748
+ 0
632749
+ ],
632750
+ [
632751
+ "list",
632752
+ 1
632753
+ ],
632754
+ [
632755
+ "meal",
632756
+ 0
632757
+ ],
632758
+ [
632759
+ "value",
632760
+ 0
632761
+ ]
632762
+ ],
632956
632763
  [
632957
632764
  [
632958
632765
  "is",
@@ -633307,24 +633114,6 @@
633307
633114
  0
633308
633115
  ]
633309
633116
  ],
633310
- [
633311
- [
633312
- "list",
633313
- 1
633314
- ],
633315
- [
633316
- "modifies",
633317
- 0
633318
- ],
633319
- [
633320
- "strawberry",
633321
- 0
633322
- ],
633323
- [
633324
- "unknown",
633325
- 0
633326
- ]
633327
- ],
633328
633117
  [
633329
633118
  [
633330
633119
  "list",
@@ -1338,7 +1338,7 @@
1338
1338
  }
1339
1339
  ]
1340
1340
  },
1341
- "trace": "\n\n>>>>>>>>>>>>> Counter 1\n summary\n\n 0. price/0 (1, 0) - \"price\"\n 1. list/0 (1, 5) - \"and\"\n 2. quantity/0 (1, 8) - \"quantity\"\n 3. is/0 (1, 12) - \"are\"\n 4. property/0 (dead) (1, 18) - \"properties\"\n\n details\n\n 0. price/0 (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. list/0 (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')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\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. quantity/0 (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. is/0 (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. property/0 (dead) (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) (2, 0) - \"price\"\n 1. list/0 (1, 5) - \"and\"\n 2. quantity/0 (1, 8) - \"quantity\"\n 3. is/0 (1, 12) - \"are\"\n 4. property/0 (dead) (1, 18) - \"properties\"\n\n details\n\n *0. price/1 (dead) (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. list/0 (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')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\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. quantity/0 (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. is/0 (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. property/0 (dead) (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')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.de\n variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.d\n variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\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 (3, 0) - \"price and quantity\"\n 1. is/0 (1, 12) - \"are\"\n 2. property/0 (dead) (1, 18) - \"properties\"\n\n details\n\n *0. list/1 (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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead, variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['quantifier', 'comparable', 'property', 'theAble', 'number', 'queryable', 'quantity', 'listable']\n dead: True\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. is/0 (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. property/0 (dead) (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 (4, 0) - \"price and quantity are properties\"\n\n details\n\n *0. is/1 (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 contexts: ShiftedArray(zero at 1)\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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead, variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['quantifier', 'comparable', 'property', 'theAble', 'number', 'queryable', 'quantity', 'listable']\n dead: True\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 contexts: ShiftedArray(zero at 1)\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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead,\n variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['quantifier', 'comparable', 'property', 'theAble', 'number', 'queryable', 'quantity', 'listable']\n dead: True\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) (5, 0) - \"price and quantity are properties\"\n\n details\n\n *0. is/2 (dead) (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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead, variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['quantifier', 'comparable', 'property', 'theAble', 'number', 'queryable', 'quantity', 'listable']\n dead: True\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",
1341
+ "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\\')))\", \\'And([\\\\\\'Listable(Unify(context.instance, variables.instance))\\\\\\', \\\\\\'And([\\\\\\\\\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\\\\\\\\\', \\\\\\\\\\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')))\"])\\\\\\\\\\\\\\'])\\\\\\'])\\'])]<==>[And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'And([\\\\\\'Listable(Unify(context.instance, variables.instance))\\\\\\', \\\\\\'And([\\\\\\\\\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\\\\\\\\\', \\\\\\\\\\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')))\"])\\\\\\\\\\\\\\'])\\\\\\'])\\'])], 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')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\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\\')))\", \\'And([\\\\\\'Listable(Unify(context.instance, variables.instance))\\\\\\', \\\\\\'And([\\\\\\\\\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\\\\\\\\\', \\\\\\\\\\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')))\"])\\\\\\\\\\\\\\'])\\\\\\'])\\'])]<==>[And([\"ListableType(Listable(Type(variable: \\'type\\')))\", \\'And([\\\\\\'Listable(Unify(context.instance, variables.instance))\\\\\\', \\\\\\'And([\\\\\\\\\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\\\\\\\\\', \\\\\\\\\\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')))\"])\\\\\\\\\\\\\\'])\\\\\\'])\\'])], 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')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.dead, variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\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')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.de\n variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', 1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\n Right Selector: [And([\"ListableType(Listable(Type(variable: 'type')))\", 'And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'And([\\\\\\'Listable(Unify(context.d\n variables.dead))\\\\\\', \\\\\\'Not([\"ListableType(Listable(Type(variable: \\\\\\\\\\\\\\'(\\\\\\\\\\\\\\'contexts\\\\\\\\\\\\\\', -1, \\\\\\\\\\\\\\'notConjunctableWith\\\\\\\\\\\\\\')\\\\\\\\\\\\\\')))\"])\\\\\\'])\\'])'])]\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\\')))\", \"And([\\'Listable(Unify(context.instance, variables.instance))\\', \\'Listable(Unify(context.dead, variables.dead))\\'])\"])]<==>[], bridge(bridge), passthrough)'], evaluator(Bridge(\"{ ...operator, value: append(before, operator.value) }\")), variables({'contexts': ShiftedArray(zero at 1), 'found_types': ['quantity', 'price'], 'type': ['comparable', 'theAble', 'queryable', 'quantifier', 'number', 'listable', 'property', 'quantity'], 'dead': True}) 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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead, variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['comparable', 'theAble', 'queryable', 'quantifier', 'number', 'listable', 'property', 'quantity']\n dead: True\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({'contexts': ShiftedArray(zero at 1), '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 contexts: ShiftedArray(zero at 1)\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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead, variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['comparable', 'theAble', 'queryable', 'quantifier', 'number', 'listable', 'property', 'quantity']\n dead: True\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 contexts: ShiftedArray(zero at 1)\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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead,\n variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['comparable', 'theAble', 'queryable', 'quantifier', 'number', 'listable', 'property', 'quantity']\n dead: True\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')))\", \"And(['Listable(Unify(context.instance, variables.instance))', 'Listable(Unify(context.dead, variables.dead))'])\"])]\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, value: append(before, operator.value) }\")\n Variables:\n contexts: ShiftedArray(zero at 1)\n found_types: ['quantity', 'price']\n type: ['comparable', 'theAble', 'queryable', 'quantifier', 'number', 'listable', 'property', 'quantity']\n dead: True\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",
1342
1342
  "contexts": [
1343
1343
  {
1344
1344
  "number": "many",
@@ -3027,7 +3027,7 @@
3027
3027
  }
3028
3028
  ]
3029
3029
  },
3030
- "trace": "\n\n>>>>>>>>>>>>> Counter 1\n summary\n\n 0. unknown/0 (1, 0) - \"worth\"\n 1. means/0 (1, 3) - \"means\"\n 2. price/0 (1, 5) - \"price\"\n 3. timesOperator/0 (1, 9) - \"times\"\n 4. quantity/0 (1, 11) - \"quantity\"\n\n details\n\n 0. unknown/0 (1, 0) - \"worth\"\n {\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. means/0 (1, 3) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n 2. price/0 (1, 5) - \"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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 3. timesOperator/0 (1, 9) - \"times\"\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n 4. quantity/0 (1, 11) - \"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': 24, 'end': 31}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is ('unknown', 0)\n Context:\n {\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n\n\n>>>>>>>>>>>>> Counter 2\n summary\n\n *0. unknown/0 (dead) (2, 0) - \"worth\"\n 1. means/0 (1, 3) - \"means\"\n 2. price/0 (1, 5) - \"price\"\n 3. timesOperator/0 (1, 9) - \"times\"\n 4. quantity/0 (1, 11) - \"quantity\"\n\n details\n\n *0. unknown/0 (dead) (2, 0) - \"worth\"\n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. means/0 (1, 3) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n 2. price/0 (1, 5) - \"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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 3. timesOperator/0 (1, 9) - \"times\"\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n 4. quantity/0 (1, 11) - \"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': 24, 'end': 31}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n<<<<<<<<<<<<<\nNext Op (index=2) 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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n\n>>>>>>>>>>>>> Counter 3\n summary\n\n 0. unknown/0 (dead) (2, 0) - \"worth\"\n 1. means/0 (1, 3) - \"means\"\n *2. price/1 (dead) (2, 1) - \"price\"\n 3. timesOperator/0 (1, 9) - \"times\"\n 4. quantity/0 (1, 11) - \"quantity\"\n\n details\n\n 0. unknown/0 (dead) (2, 0) - \"worth\"\n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. means/0 (1, 3) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n *2. price/1 (dead) (2, 1) - \"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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 3. timesOperator/0 (1, 9) - \"times\"\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n 4. quantity/0 (1, 11) - \"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': 24, 'end': 31}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n<<<<<<<<<<<<<\nNext Op (index=3) is ('timesOperator', 0)\n Context:\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types,\n after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, {\n property:\n 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types,\n after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator'\n }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n\n\n>>>>>>>>>>>>> Counter 4\n summary\n\n 0. unknown/0 (dead) (2, 0) - \"worth\"\n 1. means/0 (1, 3) - \"means\"\n *2. timesExpression/1 (dead) (3, 0) - \"price times quantity\"\n\n details\n\n 0. unknown/0 (dead) (2, 0) - \"worth\"\n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. means/0 (1, 3) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n *2. timesExpression/1 (dead) (3, 0) - \"price times quantity\"\n {\n prioritized_by: [('timesOperator', 0)]\n dead: true\n evaluate: true\n interpolate: [\n {'property': 'x'}\n, {'property': 'operator'}\n, {'property': 'y'}\n ]\n isResponse: true\n marker: \n Operator(timesExpression/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n number: \"one\"\n operator: \n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Variables:\n contexts: ShiftedArray(zero at 3)\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n\n range: {'start': 12, 'end': 31}\n text: \"price times quantity\"\n types: [\n 'property'\n ]\n value: None\n word: \"times\"\n x: \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': 12, 'end': 16}\n text: \"price\"\n types: [\n 'price'\n ]\n value: \"price\"\n word: \"price\"\n }\n\n y: \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': 24, 'end': 31}\n text: \"quantity\"\n types: [\n 'quantity'\n ]\n value: \"quantity\"\n word: \"quantity\"\n }\n\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is ('means', 0)\n Context:\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n\n\n>>>>>>>>>>>>> Counter 5\n summary\n\n *0. means/1 (dead) (4, 0) - \"worth means price times quantity\"\n\n details\n\n *0. means/1 (dead) (4, 0) - \"worth means price times quantity\"\n {\n prioritized_by: [('means', 0)]\n dead: true\n default: true\n from: \n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n\n marker: \n Operator(means/1)\n Selectors:\n [\n Selector\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n\n range: {'start': 0, 'end': 31}\n text: \"worth means price times quantity\"\n to: \n {\n prioritized_by: [('timesOperator', 0)]\n dead: true\n evaluate: true\n interpolate: [\n {'property': 'x'}\n, {'property': 'operator'}\n, {'property': 'y'}\n ]\n isResponse: true\n marker: \n Operator(timesExpression/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n number: \"one\"\n operator: \n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Variables:\n contexts: ShiftedArray(zero at 3)\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n\n range: {'start': 12, 'end': 31}\n text: \"price times quantity\"\n types: [\n 'property'\n ]\n value: None\n word: \"times\"\n x: \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': 12, 'end': 16}\n text: \"price\"\n types: [\n 'price'\n ]\n value: \"price\"\n word: \"price\"\n }\n\n y: \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': 24, 'end': 31}\n text: \"quantity\"\n types: [\n 'quantity'\n ]\n value: \"quantity\"\n word: \"quantity\"\n }\n\n }\n\n value: \"means\"\n word: \"means\"\n }\n<<<<<<<<<<<<<\n",
3030
+ "trace": "\n\n>>>>>>>>>>>>> Counter 1\n summary\n\n 0. unknown/0 - \"worth\"\n 1. means/0 - \"means\"\n 2. price/0 - \"price\"\n 3. timesOperator/0 - \"times\"\n 4. quantity/0 - \"quantity\"\n\n details\n\n 0. Operator(unknown/0, ['Selector(Bridge(\"{ ...operator, unknown: true, dead: true }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...operator, unknown: true, dead: true }\")), variables({}) bridge(bridge)) (1, 0) - \"worth\"\n {\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. Operator(means/0, ['Selector(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\"), , [Any]<==>[Any], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")), variables({}) bridge(bridge)) (1, 2) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n 2. Operator(price/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 5) - \"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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 3. Operator(timesOperator/0, ['Selector(Bridge(\"{ ...next(operator), operator: operator, marker: next(operator(\\'timesExpression\\')), types: lub(append([\\'mathematicalExpression\\'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: \\'one\\', isResponse: true, evaluate: true, interpolate: [{ property: \\'x\\' }, { property: \\'operator\\' }, { property: \\'y\\' }] }\"), , [Or([\"Listable(Ref(\\'number\\', *))\", \"Listable(Ref(\\'mathematicalExpression\\', *))\"])]<==>[Or([\"Listable(Ref(\\'number\\', *))\", \"Listable(Ref(\\'mathematicalExpression\\', *))\"])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")), variables({}) bridge(bridge)) (1, 8) - \"times\"\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n 4. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 11) - \"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': 24, 'end': 31}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n<<<<<<<<<<<<<\nNext Op (index=0) is ('unknown', 0)\n Context:\n {\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n\n\n>>>>>>>>>>>>> Counter 2\n summary\n\n *0. unknown/0 (dead) - \"worth\"\n 1. means/0 - \"means\"\n 2. price/0 - \"price\"\n 3. timesOperator/0 - \"times\"\n 4. quantity/0 - \"quantity\"\n\n details\n\n 0. Operator(unknown/0, ['Selector(Bridge(\"{ ...operator, unknown: true, dead: true }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...operator, unknown: true, dead: true }\")), variables({'contexts': ShiftedArray(zero at 0)}) bridge(bridge)) (2, 0) - \"worth\"\n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. Operator(means/0, ['Selector(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\"), , [Any]<==>[Any], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")), variables({}) bridge(bridge)) (1, 2) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n 2. Operator(price/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 5) - \"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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 3. Operator(timesOperator/0, ['Selector(Bridge(\"{ ...next(operator), operator: operator, marker: next(operator(\\'timesExpression\\')), types: lub(append([\\'mathematicalExpression\\'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: \\'one\\', isResponse: true, evaluate: true, interpolate: [{ property: \\'x\\' }, { property: \\'operator\\' }, { property: \\'y\\' }] }\"), , [Or([\"Listable(Ref(\\'number\\', *))\", \"Listable(Ref(\\'mathematicalExpression\\', *))\"])]<==>[Or([\"Listable(Ref(\\'number\\', *))\", \"Listable(Ref(\\'mathematicalExpression\\', *))\"])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")), variables({}) bridge(bridge)) (1, 8) - \"times\"\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n 4. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 11) - \"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': 24, 'end': 31}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n<<<<<<<<<<<<<\nNext Op (index=2) 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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n\n\n>>>>>>>>>>>>> Counter 3\n summary\n\n 0. unknown/0 (dead) - \"worth\"\n 1. means/0 - \"means\"\n *2. price/1 (dead) - \"price\"\n 3. timesOperator/0 - \"times\"\n 4. quantity/0 - \"quantity\"\n\n details\n\n 0. Operator(unknown/0, ['Selector(Bridge(\"{ ...operator, unknown: true, dead: true }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...operator, unknown: true, dead: true }\")), variables({'contexts': ShiftedArray(zero at 0)}) bridge(bridge)) (2, 0) - \"worth\"\n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. Operator(means/0, ['Selector(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\"), , [Any]<==>[Any], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")), variables({}) bridge(bridge)) (1, 2) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n 2. Operator(price/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (2, 1) - \"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': 12, 'end': 16}\n text: \"price\"\n value: \"price\"\n word: \"price\"\n }\n 3. Operator(timesOperator/0, ['Selector(Bridge(\"{ ...next(operator), operator: operator, marker: next(operator(\\'timesExpression\\')), types: lub(append([\\'mathematicalExpression\\'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: \\'one\\', isResponse: true, evaluate: true, interpolate: [{ property: \\'x\\' }, { property: \\'operator\\' }, { property: \\'y\\' }] }\"), , [Or([\"Listable(Ref(\\'number\\', *))\", \"Listable(Ref(\\'mathematicalExpression\\', *))\"])]<==>[Or([\"Listable(Ref(\\'number\\', *))\", \"Listable(Ref(\\'mathematicalExpression\\', *))\"])], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")), variables({}) bridge(bridge)) (1, 8) - \"times\"\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n 4. Operator(quantity/0, ['Selector(Bridge(\"{ ...next(operator) }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator) }\")), variables({}) bridge(bridge)) (1, 11) - \"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': 24, 'end': 31}\n text: \"quantity\"\n value: \"quantity\"\n word: \"quantity\"\n }\n<<<<<<<<<<<<<\nNext Op (index=3) is ('timesOperator', 0)\n Context:\n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types,\n after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, {\n property:\n 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types,\n after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator'\n }, { property: 'y' }] }\")\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n\n\n>>>>>>>>>>>>> Counter 4\n summary\n\n 0. unknown/0 (dead) - \"worth\"\n 1. means/0 - \"means\"\n *2. timesExpression/1 (dead) - \"price times quantity\"\n\n details\n\n 0. Operator(unknown/0, ['Selector(Bridge(\"{ ...operator, unknown: true, dead: true }\"), , []<==>[], bridge(bridge))'], evaluator(Bridge(\"{ ...operator, unknown: true, dead: true }\")), variables({'contexts': ShiftedArray(zero at 0)}) bridge(bridge)) (2, 0) - \"worth\"\n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n 1. Operator(means/0, ['Selector(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\"), , [Any]<==>[Any], bridge(bridge))'], evaluator(Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")), variables({}) bridge(bridge)) (1, 2) - \"means\"\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n 2. Operator(timesExpression/1, ['Selector(None, , []<==>[], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (3, 0) - \"price times quantity\"\n {\n prioritized_by: [('timesOperator', 0)]\n dead: true\n evaluate: true\n interpolate: [\n {'property': 'x'}\n, {'property': 'operator'}\n, {'property': 'y'}\n ]\n isResponse: true\n marker: \n Operator(timesExpression/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n number: \"one\"\n operator: \n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Variables:\n contexts: ShiftedArray(zero at 3)\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n\n range: {'start': 12, 'end': 31}\n text: \"price times quantity\"\n types: [\n 'property'\n ]\n value: None\n word: \"times\"\n x: \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': 12, 'end': 16}\n text: \"price\"\n types: [\n 'price'\n ]\n value: \"price\"\n word: \"price\"\n }\n\n y: \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': 24, 'end': 31}\n text: \"quantity\"\n types: [\n 'quantity'\n ]\n value: \"quantity\"\n word: \"quantity\"\n }\n\n }\n<<<<<<<<<<<<<\nNext Op (index=1) is ('means', 0)\n Context:\n {\n default: true\n marker: \n Operator(means/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), from: before[0], to: after[0] }\")\n\n range: {'start': 6, 'end': 10}\n text: \"means\"\n value: \"means\"\n word: \"means\"\n }\n\n\n>>>>>>>>>>>>> Counter 5\n summary\n\n *0. means/1 (dead) - \"worth means price times quantity\"\n\n details\n\n 0. Operator(means/1, ['Selector(None, , [Any]<==>[Any], bridge(bridge))'], evaluator(None), variables({}) bridge(bridge)) (4, 0) - \"worth means price times quantity\"\n {\n prioritized_by: [('means', 0)]\n dead: true\n default: true\n from: \n {\n prioritized_by: [('unknown', 0)]\n dead: true\n marker: \n Operator(unknown/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Left Selector: []\n Right Selector: []\n ]\n Evaluator:\n Bridge(\"{ ...operator, unknown: true, dead: true }\")\n Variables:\n contexts: ShiftedArray(zero at 0)\n\n range: {'start': 0, 'end': 4}\n text: \"worth\"\n unknown: true\n value: \"worth\"\n word: \"worth\"\n }\n\n marker: \n Operator(means/1)\n Selectors:\n [\n Selector\n Left Selector: [Any]\n Right Selector: [Any]\n ]\n\n range: {'start': 0, 'end': 31}\n text: \"worth means price times quantity\"\n to: \n {\n prioritized_by: [('timesOperator', 0)]\n dead: true\n evaluate: true\n interpolate: [\n {'property': 'x'}\n, {'property': 'operator'}\n, {'property': 'y'}\n ]\n isResponse: true\n marker: \n Operator(timesExpression/1)\n Selectors:\n [\n Selector\n Left Selector: []\n Right Selector: []\n ]\n\n number: \"one\"\n operator: \n {\n marker: \n Operator(timesOperator/0)\n Selectors:\n [\n Selector\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Left Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n Right Selector: [Or([\"Listable(Ref('number', *))\", \"Listable(Ref('mathematicalExpression', *))\"])]\n ]\n Evaluator:\n Bridge(\"{ ...next(operator), operator: operator, marker: next(operator('timesExpression')), types: lub(append(['mathematicalExpression'], operator.types, before[0].types, after[0].types)), value: null, x: before[0], y: after[0], number: 'one', isResponse: true, evaluate: true, interpolate: [{ property: 'x' }, { property: 'operator' }, { property: 'y' }] }\")\n Variables:\n contexts: ShiftedArray(zero at 3)\n\n range: {'start': 18, 'end': 22}\n text: \"times\"\n value: \"timesOperator\"\n word: \"times\"\n }\n\n range: {'start': 12, 'end': 31}\n text: \"price times quantity\"\n types: [\n 'property'\n ]\n value: None\n word: \"times\"\n x: \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': 12, 'end': 16}\n text: \"price\"\n types: [\n 'price'\n ]\n value: \"price\"\n word: \"price\"\n }\n\n y: \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': 24, 'end': 31}\n text: \"quantity\"\n types: [\n 'quantity'\n ]\n value: \"quantity\"\n word: \"quantity\"\n }\n\n }\n\n value: \"means\"\n word: \"means\"\n }\n<<<<<<<<<<<<<\n",
3031
3031
  "contexts": [
3032
3032
  {
3033
3033
  "marker": "means",
@@ -14,6 +14,33 @@ class API {
14
14
  }
15
15
  }
16
16
 
17
+ // TODO generalize this for avoiding recusive call without changing the context properties
18
+
19
+ function okay(args, condition) {
20
+ if (condition(args)) {
21
+ const { context } = args
22
+
23
+ if (!context.control) {
24
+ context.control = {
25
+ seen: [],
26
+ nextId: 2,
27
+ }
28
+ context.control_id = 1
29
+ }
30
+
31
+ if (!context.control_id) {
32
+ context.control_id = context.control.nextId
33
+ context.control.nextId += 1
34
+ }
35
+ if (context.control.seen.includes(context.control_id)) {
36
+ return false
37
+ }
38
+ context.control.seen.push(context.control_id)
39
+ return true
40
+ }
41
+ return false
42
+ }
43
+
17
44
  const config = {
18
45
  name: 'sdefaults',
19
46
  semantics: [
@@ -22,21 +49,16 @@ const config = {
22
49
  where: where(),
23
50
  priority: -1,
24
51
  // match: ({context}) => context.flatten || context.listable && context.value[0].flatten,
25
- match: ({context}) => context.flatten || context.listable && context.value.some((value) => value.flatten),
52
+ match: (args) => okay(args, ({context}) => (context.flatten || context.listable && context.value.some((value) => value.flatten))),
26
53
  // match: ({context}) => context.flatten || context.listable || (Array.isArray(context.value) && context.value.some((value) => value.flatten)),
27
54
  apply: async ({config, km, context, s, _continue}) => {
28
55
  const [flats, wf] = flatten(['list'], context)
29
56
  const evalues = []
30
- if (context.flatten) {
31
- context.flatten = false
32
- } else {
33
- context.value.map((c) => c.flatten = false)
34
- }
35
57
  for (const flat of flats) {
36
- // const updateThis = { ...flat, flatten: false }
37
- flat.flatten = false
58
+ if (!flat.control) {
59
+ flat.control = context.control
60
+ }
38
61
  const result = await s(flat)
39
- // const result = await s({ ...flat, flatten: false })
40
62
  if (result.evalue) {
41
63
  evalues.push(result.evalue)
42
64
  }
@@ -45,17 +67,22 @@ const config = {
45
67
  context.evalue = concats(evalues)
46
68
  context.isResponse = true
47
69
  }
70
+ context.control.seen.length = 0
48
71
  }
49
72
  },
50
73
  {
51
74
  notes: 'flatten relation',
52
75
  where: where(),
53
76
  priority: -1,
54
- match: ({context}) => context.flatten && context.relation,
77
+ // match: ({context}) => context.flatten && context.relation,
78
+ match: (args) => okay(args, ({context}) => (context.flatten && context.relation)),
55
79
  apply: async ({config, km, context, s}) => {
56
80
  const [flats, wf] = flatten(['list'], context)
57
81
  for (const flat of flats) {
58
- await s({ ...flat, flatten: false })
82
+ if (!flat.control) {
83
+ flat.control = context.control
84
+ }
85
+ await s(flat)
59
86
  }
60
87
  }
61
88
  },
package/package.json CHANGED
@@ -386,8 +386,8 @@
386
386
  "scriptjs": "^2.5.9",
387
387
  "table": "^6.7.1",
388
388
  "uuid": "^9.0.0",
389
- "theprogrammablemind": "9.6.3-beta.17"
389
+ "theprogrammablemind": "9.6.3-beta.19"
390
390
  },
391
- "version": "9.6.3-beta.17",
391
+ "version": "9.6.3-beta.19",
392
392
  "license": "UNLICENSED"
393
393
  }