{
  "_id": "6a292309732311cd8759d33c",
  "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-06-10 08:08:26 UTC",
    "User": "root"
  },
  "MD5sum": "f88463b0fccc0d28d2274bbe3e78e6b2",
  "_user": "skranz",
  "_type": "src",
  "_file": "RelationalContracts_0.2.0.tar.gz",
  "_fileid": "350c40031ead1d75cbd4812a43742a4a03cca24a232ccfb70f6e8df8b9d35ea7",
  "_filesize": 2468075,
  "_sha256": "350c40031ead1d75cbd4812a43742a4a03cca24a232ccfb70f6e8df8b9d35ea7",
  "_created": "2026-06-10T08:08:26.000Z",
  "_published": "2026-06-10T08:40:41.158Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 80511333006,
      "time": 128,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "7530048203"
    },
    {
      "job": 80511332945,
      "time": 147,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "7530054487"
    },
    {
      "job": 80511332969,
      "time": 99,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "WARNING",
      "artifact": "7530585293"
    },
    {
      "job": 80511333012,
      "time": 113,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "7530493941"
    },
    {
      "job": 80510761004,
      "time": 194,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7530000504"
    },
    {
      "job": 80511332954,
      "time": 116,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7530043569"
    },
    {
      "job": 80511333049,
      "time": 100,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "WARNING",
      "artifact": "7530037899"
    },
    {
      "job": 80511333013,
      "time": 92,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "WARNING",
      "artifact": "7530034668"
    },
    {
      "job": 80511333004,
      "time": 94,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "WARNING",
      "artifact": "7530035688"
    }
  ],
  "_buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418",
  "_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",
    "description": "",
    "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-06-10T08:10:36.000Z",
      "distro": "noble",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "0b09547163dc0607ae8c52c060f72fa3b2973616b65a35887eee402d686f944d",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-06-10T08:10:52.000Z",
      "distro": "noble",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "79d2e2887abc6adf9a750efeb949e59fcb3e3458adc5e54c2d75728c1178d2e3",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-06-10T08:35:18.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "04962d90e335ab5d5f9a6b11214f4d25ae3ff5379a629e8a32e6ccbf99db539b",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-06-10T08:31:11.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "8f8b5ce2c3c3dba1f8b8474e55abb0ab73480b6eaf1eb6d076d2a8a4481d3741",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-06-10T08:10:45.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "232d83723013b27a30481a15b4266a25815dc968d330199bf96945daea9d7031",
      "status": "success",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-06-10T08:10:09.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "b19a1bc4f7dc968d3d42706b4caa8b76c261d47df072e1ef7ea68f94557bbe93",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-06-10T08:09:55.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "82791a784ac75cebe51152363fd2210e20f44f1e290245023eb25f1da9d05877",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-06-10T08:09:49.000Z",
      "commit": "e29d080e8bfff5d9033f9b0f8b86ff5e002c6369",
      "fileid": "fe5812026375f295a709c6144c3824f89b5d4c59772c086545f119706b0c19ab",
      "status": "success",
      "check": "WARNING",
      "buildurl": "https://github.com/r-universe/skranz/actions/runs/27262290418"
    }
  ]
}