// Original CPU teaching model; not a device simulator or benchmark.
#include <iostream>
#include <map>
#include <string>
#include <stdexcept>

void require(bool ok) { if (!ok) throw std::runtime_error("model check failed"); }

int main() {
 std::map<std::string,int> values;
 require(values.emplace("x0",5).second);
 require(values.emplace("x1",values.at("x0")+1).second);
 require(values.emplace("x2",values.at("x1")*2).second);
 const bool duplicate=values.emplace("x1",99).second;
 require(!duplicate && values.at("x2")==12);
 std::cout<<"result="<<values.at("x2")<<" redefinition=rejected\n";
}

