{
  "_id": "6a104013acfb0bcc41c9d00d",
  "Package": "RelationalContracts",
  "Type": "Package",
  "Title": "Characterize relational contracts in repated or stochastic games",
  "Version": "0.2.0",
  "Author": "Sebastian Kranz",
  "Maintainer": "Sebastian Kranz <sebastian.kranz@uni-ulm.de>",
  "Description": "Characterize relational contracts in repated or stochastic\ngames. Can also analyse repeated negotiation equilibria.",
  "License": "GPL >= 2.0",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.1.1",
  "Config/pak/sysreqs": "libicu-dev",
  "Repository": "https://skranz.r-universe.dev",
  "Date/Publication": "2021-03-05 13:27:25 UTC",
  "RemoteUrl": "https://github.com/skranz/RelationalContracts",
  "RemoteRef": "master",
  "RemoteSha": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-11 08:31:31 UTC",
    "User": "root"
  },
  "MD5sum": "e992177f2d4dc3bd066be611c4c08aa5",
  "_user": "skranz",
  "_type": "src",
  "_file": "RelationalContracts_0.2.0.tar.gz",
  "_fileid": "c53f7238b19aee41010aa343cc2dc1912ea98ed4dfb86e550f1e0eef081450cd",
  "_filesize": 2469448,
  "_sha256": "c53f7238b19aee41010aa343cc2dc1912ea98ed4dfb86e550f1e0eef081450cd",
  "_created": "2026-05-11T08:31:31.000Z",
  "_published": "2026-05-22T11:37:55.366Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77371867304,
      "time": 128,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "6913822218"
    },
    {
      "job": 77371867394,
      "time": 141,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "6913827794"
    },
    {
      "job": 77371867178,
      "time": 94,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "WARNING",
      "artifact": "6913811042"
    },
    {
      "job": 77371866861,
      "time": 139,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "6913825054"
    },
    {
      "job": 77371866665,
      "time": 271,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6913780731"
    },
    {
      "job": 77371866676,
      "time": 122,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7159565018"
    },
    {
      "job": 77371867174,
      "time": 101,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "6913813141"
    },
    {
      "job": 77371867573,
      "time": 93,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "WARNING",
      "artifact": "6913810884"
    },
    {
      "job": 77371867454,
      "time": 97,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "6913812481"
    }
  ],
  "_buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/skranz/RelationalContracts",
  "_commit": {
    "id": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
    "author": "Sebastian Kranz <sebkranz@gmail.com>",
    "committer": "Sebastian Kranz <sebkranz@gmail.com>",
    "message": "Updates and Gangstas Paradise Vignette\n",
    "time": 1614950845
  },
  "_maintainer": {
    "name": "Sebastian Kranz",
    "email": "sebastian.kranz@uni-ulm.de",
    "login": "skranz",
    "bluesky": "@sebkranz.bsky.social",
    "uuid": 1413022
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "restorepoint",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "role": "Depends"
    },
    {
      "package": "matrixStats",
      "role": "Depends"
    },
    {
      "package": "RelationalContractsCpp",
      "role": "Depends"
    },
    {
      "package": "tidyr",
      "role": "Depends"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "plotly",
      "role": "Suggests"
    },
    {
      "package": "DiagrammeR",
      "role": "Suggests"
    }
  ],
  "_owner": "skranz",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [],
  "_tags": [],
  "_topics": [
    "dynamic-game",
    "economics",
    "game-theory",
    "hold-up",
    "nash-equilibrium",
    "repeated-game",
    "stochastic-game"
  ],
  "_stars": 4,
  "_contributors": [
    {
      "user": "skranz",
      "count": 76,
      "uuid": 1413022
    }
  ],
  "_userbio": {
    "uuid": 1413022,
    "type": "user",
    "name": "Sebastian Kranz"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/RelationalContracts"
  },
  "_devurl": "https://github.com/skranz/relationalcontracts",
  "_searchresults": 15,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/readme.html",
    "extra/readme.md",
    "extra/RelationalContracts.html",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "A1A2.to.a.grid",
    "add.action.details",
    "add.eqs.labs",
    "add.rel.multistage.compile",
    "add.rne.action.labels",
    "add.to.rel.defs",
    "add.to.rel.list",
    "advanced.paste.matrix.cols",
    "animate_capped_rne_history",
    "animate_eq_li",
    "approxeq",
    "arms.race.example",
    "assert.action.names",
    "capped.rne.iterations",
    "capped.rne.multistage.iterations",
    "capped.rne.period.T",
    "check.rel",
    "check.rel.colnames",
    "check.rel.has.colscolnames",
    "compare_eq",
    "compile.sdf",
    "compile.sdf.classic",
    "compute.after.cap.action.inds",
    "compute.delta.rho",
    "compute.eq.trans.mat",
    "compute.na",
    "compute.optimal.payoffs.from.actions",
    "compute.optimal.payoffs.from.eq.actions",
    "compute.payoff.for.state",
    "compute.rep.game.action.lists",
    "compute.rep.game.nash.threats",
    "compute.x.trans.mat",
    "deparse1",
    "diagnose_transitions",
    "dyngame.sol.to.rel.sol",
    "eq_combine_xgroup",
    "eq_diagram",
    "eq_diagram_xgroup",
    "eq.a.to.ax",
    "eq.ax.to.a",
    "eq.li.compare",
    "eval.rel.expression",
    "example.relhold",
    "example.rne",
    "examples.diagnose",
    "examples.eq_diagram",
    "examples.joint_independent",
    "examples.multistage",
    "examples.multistage.spe.trunc",
    "examples.rel_state_probs",
    "examples.rel.spe",
    "examples.rne_capped",
    "examples.spe.trunc",
    "expand_grid",
    "expand.grid2",
    "extend.range",
    "factor.cols.as.strings",
    "find.best.reply.payoffs",
    "find.cycles",
    "find.eq.chain.x",
    "find.eq.li.action.repetitions",
    "find.same.eqs",
    "find.static.a.for.all.x",
    "find.static.ci.for.all.x",
    "find.static.G.for.all.x",
    "find.static.payoffs.for.all.x",
    "first.non.null",
    "get_capped_history",
    "get_eq",
    "get_mpe",
    "get_repgames_results",
    "get_rne",
    "get_rne_details",
    "get_spe",
    "get_T_rne_history",
    "get.def.x",
    "has.col",
    "has.cols",
    "irv",
    "irv_joint_dist",
    "irv_val",
    "make.ax.labels",
    "make.rel.dyngame",
    "make.rsg.game",
    "make.state.lab.a",
    "make.state.lab.ai",
    "match.by.cols",
    "mpe.example",
    "nlist",
    "non.null",
    "num.cycles.of.length",
    "old.make.state.lab.a",
    "paste.df.cols",
    "paste.matrix.cols",
    "plot_eq_payoff_set",
    "plot.eqs",
    "plot.rne.payoff.set",
    "plot.rsg.payoff.set",
    "prepare.after.cap",
    "prepare.for.spe",
    "print.relgame",
    "quick_df",
    "r_rne_find_actions",
    "r.capped.rne.iterations",
    "r.capped.rne.multistage.iterations",
    "r.pl1.ax.best.reply.payoffs",
    "r.pl2.ax.best.reply.payoffs",
    "r.which.chunk.maxs",
    "rel_after_cap_actions",
    "rel_after_cap_payoffs",
    "rel_capped_rne",
    "rel_capped_rne_old",
    "rel_change_param",
    "rel_compile",
    "rel_eq_as_discounted_sums",
    "rel_first_best",
    "rel_game",
    "rel_is_eq_rne",
    "rel_mpe",
    "rel_options",
    "rel_param",
    "rel_rne",
    "rel_rne_from_capped",
    "rel_rne_from_eq_actions",
    "rel_scale_eq_payoffs",
    "rel_solve_repgames",
    "rel_spe",
    "rel_spe_classic",
    "rel_state",
    "rel_state_probs",
    "rel_states",
    "rel_T_rne",
    "rel_transition",
    "rel.capped.rne.multistage.old",
    "rep.games.to.rne.df",
    "scale.eq.payoffs",
    "simulate.eq",
    "sizes.to.chunk.inds",
    "solve.weakly.directional.state",
    "solve.x.rep.multistage",
    "solve.x.repgame",
    "solve.x.repgame.external",
    "static.nash.eq",
    "study_convergence",
    "study_convergene_example",
    "trans.mat.mult",
    "trne_cycle_info",
    "trunc_policy_iteration",
    "trunc.spe.cheating.payoffs",
    "trunc.spe.full.dyn.vi",
    "trunc.spe.harshest.punishment",
    "trunc.spe.highest.U",
    "which.chunk.maxs",
    "xrow.a.to.ax"
  ],
  "_help": [
    {
      "page": "animate_capped_rne_history",
      "title": "Use ggplotly to show an animation of the payoff sets of a capped RNE going from t=T to t=1",
      "topics": [
        "animate_capped_rne_history"
      ]
    },
    {
      "page": "animate_eq_li",
      "title": "Use ggplotly to show an animation of the payoff sets of a list of equilibria",
      "topics": [
        "animate_eq_li"
      ]
    },
    {
      "page": "compare_eq",
      "title": "Helper function to find differences between two equilibria",
      "topics": [
        "compare_eq"
      ]
    },
    {
      "page": "diagnose_transitions",
      "title": "Take a look at the computed transitions for each state using separate data frames",
      "topics": [
        "diagnose_transitions"
      ]
    },
    {
      "page": "eq_combine_xgroup",
      "title": "Aggregate equilibrium behavior in games with random active player",
      "topics": [
        "eq_combine_xgroup"
      ]
    },
    {
      "page": "eq_diagram",
      "title": "Draws a diagram of equilibrium state transition",
      "topics": [
        "eq_diagram"
      ]
    },
    {
      "page": "eq_diagram_xgroup",
      "title": "Draws a diagram of equilibrium state transition",
      "topics": [
        "eq_diagram_xgroup"
      ]
    },
    {
      "page": "get_eq",
      "title": "Get the last computed equilibrium of game g",
      "topics": [
        "get_eq"
      ]
    },
    {
      "page": "get_repgames_results",
      "title": "Get the results of all solved repeated games assuming the state is fixed",
      "topics": [
        "get_repgames_results"
      ]
    },
    {
      "page": "get_rne",
      "title": "Get the last computed RNE of game g",
      "topics": [
        "get_rne"
      ]
    },
    {
      "page": "get_rne_details",
      "title": "Retrieve more details about the last computed RNE",
      "topics": [
        "get_rne_details"
      ]
    },
    {
      "page": "get_spe",
      "title": "Get the last computed SPE of game g",
      "topics": [
        "get_spe"
      ]
    },
    {
      "page": "get_T_rne_history",
      "title": "Get the intermediate steps in from t = T to t = 1 for a T-RNE or capped RNE that has been solved with 'save.history = TRUE'",
      "topics": [
        "get_T_rne_history"
      ]
    },
    {
      "page": "irv",
      "title": "Helper functions to specify state transitions",
      "topics": [
        "irv"
      ]
    },
    {
      "page": "irv_joint_dist",
      "title": "Helper function to specify state transitions",
      "topics": [
        "irv_joint_dist"
      ]
    },
    {
      "page": "irv_val",
      "title": "Helper functions to specify state transitions",
      "topics": [
        "irv_val"
      ]
    },
    {
      "page": "plot_eq_payoff_set",
      "title": "Show a base R plot of equilibrium payoff set",
      "topics": [
        "plot_eq_payoff_set"
      ]
    },
    {
      "page": "rel_after_cap_actions",
      "title": "Fix action profiles for the equilibrium path (ae) and during punishment (a1.hat and a2.hat) that are assumed to be played after the cap in period T onwards. The punishment profile a1.hat is the profile in which player 1 already plays a best-reply (in a1 he might play a non-best reply). From the specified action profiles in all states, we can compute the relevant after-cap payoffs U(x), v1(x) and v2(x) assuming that state transitions would continue.",
      "topics": [
        "rel_after_cap_actions"
      ]
    },
    {
      "page": "rel_after_cap_payoffs",
      "title": "Specify the SPE payoff set(s) of the truncated game(s) after a cap in period T. While we could specify a complete repeated game that is played after the cap, it also suffices to specify just an SPE payoff set of the truncated game of the after-cap state.",
      "topics": [
        "rel_after_cap_payoffs"
      ]
    },
    {
      "page": "rel_capped_rne",
      "title": "Solve an RNE for a capped version of a game",
      "topics": [
        "rel_capped_rne"
      ]
    },
    {
      "page": "rel_change_param",
      "title": "Add parameters to a relational contracting game",
      "topics": [
        "rel_change_param"
      ]
    },
    {
      "page": "rel_compile",
      "title": "Compiles a relational contracting game",
      "topics": [
        "rel_compile"
      ]
    },
    {
      "page": "rel_eq_as_discounted_sums",
      "title": "Translate equilibrium payoffs as discounted sum of payoffs",
      "topics": [
        "rel_eq_as_discounted_sums"
      ]
    },
    {
      "page": "rel_first_best",
      "title": "Compute first-best.",
      "topics": [
        "rel_first_best"
      ]
    },
    {
      "page": "rel_game",
      "title": "Creates a new relational contracting game",
      "topics": [
        "rel_game"
      ]
    },
    {
      "page": "rel_is_eq_rne",
      "title": "Checks if an equilibrium eq with negotiation payoffs is an RNE",
      "topics": [
        "rel_is_eq_rne"
      ]
    },
    {
      "page": "rel_mpe",
      "title": "Tries to find a MPE by computing iteratively best replies",
      "topics": [
        "rel_mpe"
      ]
    },
    {
      "page": "rel_options",
      "title": "Set some game options",
      "topics": [
        "rel_options"
      ]
    },
    {
      "page": "rel_param",
      "title": "Add parameters to a relational contracting game",
      "topics": [
        "rel_param"
      ]
    },
    {
      "page": "rel_rne",
      "title": "Find an RNE for a (weakly) directional game",
      "topics": [
        "rel_rne"
      ]
    },
    {
      "page": "rel_scale_eq_payoffs",
      "title": "Scale equilibrium payoffs",
      "topics": [
        "rel_scale_eq_payoffs"
      ]
    },
    {
      "page": "rel_solve_repgames",
      "title": "Solves for all specified states the repeated game assuming the state is fixed",
      "topics": [
        "rel_solve_repgames"
      ]
    },
    {
      "page": "rel_spe",
      "title": "Finds an optimal simple subgame perfect equilibrium of g. From this the whole SPE payoff set can be deduced.",
      "topics": [
        "rel_spe"
      ]
    },
    {
      "page": "rel_state_probs",
      "title": "Compute the long run probability distribution over states if an equilibrium is played for many periods.",
      "topics": [
        "rel_state_probs"
      ]
    },
    {
      "page": "rel_states",
      "title": "Add one or multiple states. Allows to specify action spaces, payoffs and state transitions via functions",
      "topics": [
        "rel_state",
        "rel_states"
      ]
    },
    {
      "page": "rel_T_rne",
      "title": "Compute a T-RNE",
      "topics": [
        "rel_T_rne"
      ]
    },
    {
      "page": "rel_transition",
      "title": "Add a state transition from one state to one or several states. For more complex games, it may be preferable to use the arguments 'trans.fun' of 'link{rel_states}' instead.",
      "topics": [
        "rel_transition"
      ]
    }
  ],
  "_readme": "https://github.com/skranz/RelationalContracts/raw/master/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "dplyr",
    "generics",
    "glue",
    "lifecycle",
    "magrittr",
    "matrixStats",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "Rcpp",
    "RelationalContractsCpp",
    "restorepoint",
    "rlang",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "utf8",
    "vctrs",
    "withr"
  ],
  "_score": 2.4771212547196626,
  "_indexed": true,
  "_nocasepkg": "relationalcontracts",
  "_universes": [
    "skranz"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-05-11T08:33:38.000Z",
      "distro": "noble",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "f642152b8ab3377d0a76d1cb07ab85dfe20dd2c84034b503d4bb16b290d4fa66",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-05-11T08:33:57.000Z",
      "distro": "noble",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "c8644319705eda8261341f4f07459bdc89931a23baaa17706faec82a95e7aba5",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-05-11T08:33:11.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "02f732569d8a3fef1a814b43fe7e6a21c0ce06ded4546cb97394a4a063be3653",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-05-11T08:33:45.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "0dca48dc9b2724b01fc760b04e32e73b761bc17fde5eb219527d47f482177a17",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-05-11T08:33:00.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "ae049396a27cd9ffe69a5ffd42f1ce97ab55abcee769eee4f450df74b708fca2",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-05-11T08:32:53.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "ae017f36bba07d9a97f4d1983f8a5e176e6e509fea5a067fb24aa982e5618ee9",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-05-11T08:32:59.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "781a74860f69b391c8f70c259d76bb21d5bac32e0020f3806fd932c025c82cdc",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-05-22T11:37:39.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "9db190d4d2e072a0769d2734e71ba0686f4c18b71acd810184389ec48a9450e8",
      "status": "success",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/25658995428"
    }
  ]
}