echo 'Error while loading productions' . "\n";
        exit;
    }
} else {
    echo 'Cannot read agent source.' . "\n";
    exit;
}
echo "\n";
$agent->ExecuteCommandLine('timers -d');
//
$large = 1000;
$gold[$large] = array('left-right*rl*right' => array('v' => 1), 'left-right*rl*left' => array('v' => -1));
//
$current_run = 0;
foreach ($gold as $run => $info) {
    while ($current_run != $run) {
        $current_run++;
        $agent->ExecuteCommandLine('run');
        $agent->ExecuteCommandLine('init');
    }
    $agent_rules = parse_rl_rules($agent);
    $result = compare_rules($info, $agent_rules, false);
    echo 'Run #' . $current_run . ': ' . (empty($result) ? 'success' : 'failure') . "\n";
    if (!empty($result)) {
        foreach ($result as $reason) {
            echo ' ' . $reason . "\n";
        }
        break;
    }
}
$kernel->Shutdown();
echo "\n";
$agent->ExecuteCommandLine('timers -d');
//
$gold = array();
$gold[1] = array('rl*value*function*2' => array('u' => 1, 'v' => 10), 'rl*value*function*3' => array('u' => 1, 'v' => 10), 'rl*value*function*4' => array('u' => 1, 'v' => 15), 'rl*value*function*5' => array('u' => 1, 'v' => 10), 'rl*value*function*6' => array('u' => 1, 'v' => 15), 'rl*value*function*7' => array('u' => 1, 'v' => 10), 'rl*value*function*8' => array('u' => 1, 'v' => 18.75), 'rl*value*function*9' => array('u' => 1, 'v' => 10));
$gold[2] = array('rl*value*function*2' => array('u' => 2, 'v' => 19.5), 'rl*value*function*3' => array('u' => 2, 'v' => 19), 'rl*value*function*4' => array('u' => 2, 'v' => 28.75), 'rl*value*function*5' => array('u' => 2, 'v' => 19), 'rl*value*function*6' => array('u' => 2, 'v' => 28.75), 'rl*value*function*7' => array('u' => 2, 'v' => 19), 'rl*value*function*8' => array('u' => 2, 'v' => 35.6875), 'rl*value*function*9' => array('u' => 2, 'v' => 19));
$gold[3] = array('rl*value*function*2' => array('u' => 3, 'v' => 28.5), 'rl*value*function*3' => array('u' => 3, 'v' => 27.1), 'rl*value*function*4' => array('u' => 3, 'v' => 41.35), 'rl*value*function*5' => array('u' => 3, 'v' => 27.1), 'rl*value*function*6' => array('u' => 3, 'v' => 41.35), 'rl*value*function*7' => array('u' => 3, 'v' => 27.1), 'rl*value*function*8' => array('u' => 3, 'v' => 50.9875), 'rl*value*function*9' => array('u' => 3, 'v' => 27.1));
$gold[4] = array('rl*value*function*2' => array('u' => 4, 'v' => 37.005), 'rl*value*function*3' => array('u' => 4, 'v' => 34.39), 'rl*value*function*4' => array('u' => 4, 'v' => 52.8925), 'rl*value*function*5' => array('u' => 4, 'v' => 34.39), 'rl*value*function*6' => array('u' => 4, 'v' => 52.8925), 'rl*value*function*7' => array('u' => 4, 'v' => 34.39), 'rl*value*function*8' => array('u' => 4, 'v' => 64.808125), 'rl*value*function*9' => array('u' => 4, 'v' => 34.39));
$gold[5] = array('rl*value*function*2' => array('u' => 5, 'v' => 45.024), 'rl*value*function*3' => array('u' => 5, 'v' => 40.951), 'rl*value*function*4' => array('u' => 5, 'v' => 63.463), 'rl*value*function*5' => array('u' => 5, 'v' => 40.951), 'rl*value*function*6' => array('u' => 5, 'v' => 63.463), 'rl*value*function*7' => array('u' => 5, 'v' => 40.951), 'rl*value*function*8' => array('u' => 5, 'v' => 77.29225), 'rl*value*function*9' => array('u' => 5, 'v' => 40.951));
$large = 176;
// happens to be the lower bound for eps=0.00001
$gold[$large] = array('rl*value*function*2' => array('u' => $large, 'v' => 150), 'rl*value*function*3' => array('u' => $large, 'v' => 100), 'rl*value*function*4' => array('u' => $large, 'v' => 175), 'rl*value*function*5' => array('u' => $large, 'v' => 100), 'rl*value*function*6' => array('u' => $large, 'v' => 175), 'rl*value*function*7' => array('u' => $large, 'v' => 100), 'rl*value*function*8' => array('u' => $large, 'v' => 193.75), 'rl*value*function*9' => array('u' => $large, 'v' => 100));
//
$current_run = 0;
foreach ($gold as $run => $info) {
    while ($current_run != $run) {
        $current_run++;
        $agent->ExecuteCommandLine('run');
        $agent->ExecuteCommandLine('init');
    }
    $agent_rules = parse_rl_rules($agent);
    $result = compare_rules($info, $agent_rules, true);
    echo 'Run #' . $current_run . ': ' . (empty($result) ? 'success' : 'failure') . "\n";
    if (!empty($result)) {
        foreach ($result as $reason) {
            echo ' ' . $reason . "\n";
        }
        break;
    }
}
$kernel->Shutdown();