{"id":31681265,"url":"https://github.com/koulanurag/mmn","last_synced_at":"2025-10-08T07:47:45.963Z","repository":{"id":34817885,"uuid":"141938821","full_name":"koulanurag/mmn","owner":"koulanurag","description":"Moore Machine Networks (MMN): Learning Finite-State Representations of Recurrent Policy Networks ","archived":false,"fork":false,"pushed_at":"2022-12-08T05:15:10.000Z","size":120252,"stargazers_count":51,"open_issues_count":4,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-09T13:03:59.811Z","etag":null,"topics":["atari","bottleneck","deep-reinforcement-learning","explainable-artificial-intelligence","finite-state-machine","interpretability","moore-machine","pytorch","quantization","recurrent-neural-networks","tomita"],"latest_commit_sha":null,"homepage":"https://openreview.net/forum?id=S1gOpsCctm","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koulanurag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-22T23:34:32.000Z","updated_at":"2025-07-20T11:36:50.000Z","dependencies_parsed_at":"2023-01-15T09:30:56.937Z","dependency_job_id":null,"html_url":"https://github.com/koulanurag/mmn","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/koulanurag/mmn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koulanurag%2Fmmn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koulanurag%2Fmmn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koulanurag%2Fmmn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koulanurag%2Fmmn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koulanurag","download_url":"https://codeload.github.com/koulanurag/mmn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koulanurag%2Fmmn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278909712,"owners_count":26066887,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atari","bottleneck","deep-reinforcement-learning","explainable-artificial-intelligence","finite-state-machine","interpretability","moore-machine","pytorch","quantization","recurrent-neural-networks","tomita"],"created_at":"2025-10-08T07:47:33.939Z","updated_at":"2025-10-08T07:47:45.955Z","avatar_url":"https://github.com/koulanurag.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MMN\n\nThis is the implementation of Moore Machine Network (MMN) introduced in the work  **\"[Learning Finite State Representations of Recurrent Policy Networks](https://openreview.net/pdf?id=S1gOpsCctm)\"**.\n\nIf you find it useful in your research, please cite it using :\n\n```\n@inproceedings{\n  koul2018learning,\n  title={Learning Finite State Representations of Recurrent Policy Networks},\n  author={Anurag Koul and Alan Fern and Sam Greydanus},\n  booktitle={International Conference on Learning Representations},\n  year={2019},\n  url={https://openreview.net/forum?id=S1gOpsCctm},\n}\n```\n\nAlso, [here](https://postersession.ai/poster/learning-finite-state-representations-of/?fbclid=IwAR3NBEJ34GPYZw7YOJIBzujc-xU8bwNaSekeNWhVuKyJnpAuz0DykwdYKuw) is the link to the poster presented in the ICLR2019.\n\n## Installation\n* Python 3.5+\n* Pytorch\n* [gym_x](https://github.com/koulanurag/gym_x)\n* To install dependencies:\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n## Usage\nWe use ```main_mce.py , main_tomita.py``` and ```main_atari.py``` for experimenting with [Mode Counter Environment(a.k.a Gold Rush) , Tomita Grammar](https://github.com/koulanurag/gym_x) and Atari, respectively.\n\nIn the following, we describe usage w.r.t ```main_atari.py```. However, the same would apply for other cases.\n\n\n### Parameters\n```\nusage: main_atari.py [-h] [--generate_train_data] [--generate_bn_data]\n                     [--generate_max_steps GENERATE_MAX_STEPS] [--gru_train]\n                     [--gru_test] [--gru_size GRU_SIZE] [--gru_lr GRU_LR]\n                     [--bhx_train] [--ox_train] [--bhx_test] [--ox_test]\n                     [--bgru_train] [--bgru_test] [--bhx_size BHX_SIZE]\n                     [--bhx_suffix BHX_SUFFIX] [--ox_size OX_SIZE]\n                     [--train_epochs TRAIN_EPOCHS] [--batch_size BATCH_SIZE]\n                     [--bgru_lr BGRU_LR] [--gru_scratch] [--bx_scratch]\n                     [--generate_fsm] [--evaluate_fsm]\n                     [--bn_episodes BN_EPISODES] [--bn_epochs BN_EPOCHS]\n                     [--no_cuda] [--env ENV] [--env_seed ENV_SEED]\n                     [--result_dir RESULT_DIR]\n\nGRU to FSM\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --generate_train_data\n                        Generate Train Data\n  --generate_bn_data    Generate Bottle-Neck Data\n  --generate_max_steps GENERATE_MAX_STEPS\n                        Maximum number of steps to be used for data generation\n  --gru_train           Train GRU Network\n  --gru_test            Test GRU Network\n  --gru_size GRU_SIZE   No. of GRU Cells\n  --gru_lr GRU_LR       No. of GRU Cells\n  --bhx_train           Train bx network\n  --ox_train            Train ox network\n  --bhx_test            Test bx network\n  --ox_test             Test ox network\n  --bgru_train          Train binary gru network\n  --bgru_test           Test binary gru network\n  --bhx_size BHX_SIZE   binary encoding size\n  --bhx_suffix BHX_SUFFIX\n                        suffix fo bhx folder\n  --ox_size OX_SIZE     binary encoding size\n  --train_epochs TRAIN_EPOCHS\n                        No. of training episodes\n  --batch_size BATCH_SIZE\n                        batch size used for training\n  --bgru_lr BGRU_LR     Learning rate for binary GRU\n  --gru_scratch         use scratch gru for BGRU\n  --bx_scratch          use scratch bx network for BGRU\n  --generate_fsm        extract fsm from fmm net\n  --evaluate_fsm        evaluate fsm\n  --bn_episodes BN_EPISODES\n                        No. of episodes for generating data for Bottleneck\n                        Network\n  --bn_epochs BN_EPOCHS\n                        No. of Training epochs\n  --no_cuda             no cuda usage\n  --env ENV             Name of the environment\n  --env_seed ENV_SEED   Seed for the environment\n  --result_dir RESULT_DIR\n                        Directory Path to store results\n```\n\nFor most of the experiments we've done, we've set `generate_max_steps = 100`. Based on the environment you're using, you can change it accordingly. Other parameters' values were set to the default ones, except for `ox_size`, `hx_size`, and `gru_size` which were set based on the experiment we ran. \n\n### Use prepared scripts\nFormation of MMN requires following multiple steps which could be found [here](#step-by-step-manual). These steps could also be sequentially executed for `bhx_size=64,ox_size=100` using the following script. This script could be easily customized for other environments.\n\n```bash\n./run_atari.sh PongDeterministic-v4\n``` \n\n\n### Steps\n1. *Test RNN*: We assume existence of pre-trained RNN model. The following step is optional and evaluates the performance of this model:\n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --gru_test --gru_size 32\n    ```\n2. *Generate Bottleneck Data*: It involves generating and storing data for training quantized bottleneck data (QBN).\n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --generate_bn_data --gru_size 32 --generate_max_steps 100\n    ```\n3. Train BHX :  It involves training QBN for Hidden State (hx). After each epoch, the QBN is inserted into orginal rnn model and the overall model is evaluated with environment. The Best performing QBN is saved.\n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --bhx_train --bhx_size 64 --gru_size 32 --generate_max_steps 100\n    ``` \n    After it's done, the model and plots will be saved here:\n    ```bash\n    results/Atari/PongDeterministic-v4/gru_32_bhx_64/\n    ```\n4. Test BHX (optional): Inserts the saved BHX model into original rnn model and evaluates the model with environment. \n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --bhx_test --bhx_size 64 --gru_size 32 --generate_max_steps 100\n    ```\n5. Train OX : It involves training QBN for learned  observation features(X) given as input to RNN. \n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --ox_train --ox_size 100 --bhx_size 64 --gru_size 32 --generate_max_steps 100\n    ```\n    \n    After it's done, the model and plots will be saved here:\n    ```bash\n    results/Atari/PongDeterministic-v4/gru_32_ox_100/\n    ```\n6. Test BHX (optional): Inserts the saved OX model into original rnn model and evaluates the model with environment. \n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --ox_test --ox_size 100 --bhx_size 64 --gru_size 32 --generate_max_steps 100\n    ```\n7. MMN:  We form the Moore Machine Network by inserting both the BHX and OX qbn's into the original rnn model. Thereafter the performance of the  *mmn* is evaluated on the environment. Fine-Tuning of MMN is performed if there is a fall in performance which could be caused by accumulated error by both the qbn's.\n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --bgru_train --ox_size 100 --bhx_size 64 --gru_size 32 --generate_max_steps 100\n    ```\n\n    When the fine-tuning is done, model and plots will be saved here:\n    ```bash\n    results/Atari/PongDeterministic-v4/gru_32_hx_(64,100)_bgru\n    ```\n8. Test MMN (optional): Loads and tests the saved MMN model.\n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --bgru_test --bhx_size 64 --ox_size 100 --gru_size 32 --generate_max_steps 100\n    ```\n9. Extract Moore Machine: In this final step, quantized observation and hidden state space are enumarated to form a moore machine. Thereafter minimization is performed on top of it.\n    ```bash\n    python main_atari.py --env PongDeterministic-v4 --generate_fsm --bhx_size 64 --ox_size 100 --gru_size 32 --generate_max_steps 100\n    ```\n    Final Results before and after minimization are stored in text files (*fsm.txt* and *minimized_moore_machine.txt* ) here: \n    \n    ```bash\n    results/Atari/PongDeterministic-v4/gru_32_hx_(64,100)_bgru/\n    ```\n\n### Using pre-trained models\n\nFor results to be easily reproducible, previously trained GRU models on different environments have been provided. You can simply use them to train new QBNs and reproduce the results presented in the paper. Models are accessible through this directory: ```results/Atari/```. The GRU cell size can be determined from the models' path, i.e. if a model is saved in a folder named as ```gru_32```, then the GRU cell size is 32. \nHaving the pretrained GRU model, you can go to [how to run the code step by step](#step-by-step-manual) to start training the QBNs.\n\n## Results\n\n### MCE\nPresenting the Mode Counter Environments(MCE) results, number of states and observations of the MMs extracted from the MMNs both before and after minimization. Moore Machine extraction for MCE(table 1 in paper):\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eGame\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBh\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBf\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"2\"\u003eFine-Tuning Score\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"3\"\u003eBefore Minimization\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"3\"\u003eAfter Minimization\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eBefore(%)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAfter(%)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|O|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAcc(%)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|O|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAcc(%)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eAmnesia\u003cbr/\u003e(gold rush read)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e7\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e7\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e7\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e6\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e7\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e7\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eBlind\u003cbr/\u003e(gold rush blind)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e6\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e15\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e6\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e78\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e13\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"4\"\u003eTracker\u003cbr/\u003e(gold rush sneak)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e58\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e50\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e23\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e91\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e85\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Tomita Grammar\nThe below table presents the test results for the trained RNNs giving the accuracy over a test set of 100 strings drawn from the same distribution as used for training. Moore Machine extraction for Tomita grammar(table 2 in paper):\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eGrammar\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eRNN Acc(%)\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBh\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"2\"\u003eFine-Tuning Score\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"2\"\u003eBefore Minimization\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"2\"\u003eAfter Minimization\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eBefore(%)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAfter(%)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAcc(%)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAcc(%)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e13\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e2\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e28\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e2\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e2\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e13\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e14\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e3\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e34\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e39\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e17\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e18\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e95\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e96\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e192\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e96\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e115\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e96\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e316\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e6\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e518\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e11\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e99\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"2\"\u003e7\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e25\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e16\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e107\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Control Tasks\nTo run the whole thing over control tasks, you only need to run the `run_control.sh` file. Below, is an example of how to do it:\n```bash\nsh run_control.sh Acrobot-v1 32 64 64\n```\nMore experiments on control tasks have been done. Results are presented in the following table:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eGame(# of actions)\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBh\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBf\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"3\"\u003eBefore Minimization\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"3\"\u003eAfter Minimization\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|O|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eScore\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|O|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eScore\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eCart Pole(2)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e27\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e859\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e500\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e32\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e500\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eLunar Lander(4)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1502\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1165\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e198\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e52\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e89\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e115\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eAcrobot(3)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e769\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e649\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-73.95\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e11\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e23\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-89.4\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Atari\n This table shows the performance of the trained MMNs before and after finetuning for different combinations of B\u003csub\u003eh\u003c/sub\u003e and B\u003csub\u003ef\u003c/sub\u003e. A few more games investigated and the results are added to the table 3 of the paper:\n Results may slightly vary.\n \n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eGame(# of actions)\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eRNN(score)\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBh\u003c/th\u003e\n    \u003cth align=\"center\" rowspan=\"2\"\u003eBf\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"2\"\u003eFine-Tuning Score\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"3\"\u003eBefore Minimization\u003c/th\u003e\n    \u003cth align=\"center\" colspan=\"3\"\u003eAfter Minimization\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eBefore\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eAfter\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|O|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eScore\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|H|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e|O|\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eScore\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003ePong(3)\u003c/td\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e20\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e380\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e374\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e20\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e373\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e372\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e10\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e20\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e383\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e373\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e20\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e379\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e371\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e11\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eFreeway(3)\u003c/td\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e21\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eBreakout(4)\u003c/td\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003e773\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e32\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e423\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1898\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1874\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e423\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e30\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e423\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e25\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e415\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1888\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1871\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e415\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e30\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e415\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e41\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e377\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1583\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1514\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e377\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e11\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e27\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e377\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e85\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e379\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1729\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1769\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e379\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e30\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e379\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eSpace Invaders(4)\u003c/td\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003e1820\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e520\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1335\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1495\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1502\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1335\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e8\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e29\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1335\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e365\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1235\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1625\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1620\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1235\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e29\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1235\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e390\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1040\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1563\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1457\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1040\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e12\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e35\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1040\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e520\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1430\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1931\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1921\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1430\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e6\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e27\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1430\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eBowling(6)\u003c/td\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e49\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e33\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e49\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e33\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e26\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e24\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e26\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e24\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e60\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003eBoxing(18)\u003c/td\u003e\n    \u003ctd align=\"center\" rowspan=\"4\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e94\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1173\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1167\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e13\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e79\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e98\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e2621\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e2605\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e14\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e119\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e94\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e97\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e2499\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e2482\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e97\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e14\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e106\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e97\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e128\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e400\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e97\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1173\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1169\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e14\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e88\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eChopper Command(18)\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e5300\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e64\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e100\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4000\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3710\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e3731\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e4000\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e38\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e182\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e1890\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoulanurag%2Fmmn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoulanurag%2Fmmn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoulanurag%2Fmmn/lists"}