@stevenvo780/st-lang 4.7.0 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/logic/profiles/quantum/index.d.ts +153 -0
- package/dist/logic/profiles/quantum/index.d.ts.map +1 -0
- package/dist/logic/profiles/quantum/index.js +788 -0
- package/dist/logic/profiles/quantum/index.js.map +1 -0
- package/dist/namespaces/reasoning.d.ts +3 -1
- package/dist/namespaces/reasoning.d.ts.map +1 -1
- package/dist/namespaces/reasoning.js +5 -1
- package/dist/namespaces/reasoning.js.map +1 -1
- package/dist/proof-systems/certificate/canonical.d.ts +18 -0
- package/dist/proof-systems/certificate/canonical.d.ts.map +1 -0
- package/dist/proof-systems/certificate/canonical.js +79 -0
- package/dist/proof-systems/certificate/canonical.js.map +1 -0
- package/dist/proof-systems/certificate/generate.d.ts +39 -0
- package/dist/proof-systems/certificate/generate.d.ts.map +1 -0
- package/dist/proof-systems/certificate/generate.js +259 -0
- package/dist/proof-systems/certificate/generate.js.map +1 -0
- package/dist/proof-systems/certificate/index.d.ts +7 -0
- package/dist/proof-systems/certificate/index.d.ts.map +1 -0
- package/dist/proof-systems/certificate/index.js +23 -0
- package/dist/proof-systems/certificate/index.js.map +1 -0
- package/dist/proof-systems/certificate/lfsc.d.ts +15 -0
- package/dist/proof-systems/certificate/lfsc.d.ts.map +1 -0
- package/dist/proof-systems/certificate/lfsc.js +395 -0
- package/dist/proof-systems/certificate/lfsc.js.map +1 -0
- package/dist/proof-systems/certificate/rules.d.ts +8 -0
- package/dist/proof-systems/certificate/rules.d.ts.map +1 -0
- package/dist/proof-systems/certificate/rules.js +369 -0
- package/dist/proof-systems/certificate/rules.js.map +1 -0
- package/dist/proof-systems/certificate/types.d.ts +114 -0
- package/dist/proof-systems/certificate/types.d.ts.map +1 -0
- package/dist/proof-systems/certificate/types.js +18 -0
- package/dist/proof-systems/certificate/types.js.map +1 -0
- package/dist/proof-systems/certificate/verify.d.ts +20 -0
- package/dist/proof-systems/certificate/verify.d.ts.map +1 -0
- package/dist/proof-systems/certificate/verify.js +171 -0
- package/dist/proof-systems/certificate/verify.js.map +1 -0
- package/dist/reasoning/ban-logic/analyze.d.ts +31 -0
- package/dist/reasoning/ban-logic/analyze.d.ts.map +1 -0
- package/dist/reasoning/ban-logic/analyze.js +113 -0
- package/dist/reasoning/ban-logic/analyze.js.map +1 -0
- package/dist/reasoning/ban-logic/index.d.ts +7 -0
- package/dist/reasoning/ban-logic/index.d.ts.map +1 -0
- package/dist/reasoning/ban-logic/index.js +66 -0
- package/dist/reasoning/ban-logic/index.js.map +1 -0
- package/dist/reasoning/ban-logic/protocols.d.ts +54 -0
- package/dist/reasoning/ban-logic/protocols.d.ts.map +1 -0
- package/dist/reasoning/ban-logic/protocols.js +219 -0
- package/dist/reasoning/ban-logic/protocols.js.map +1 -0
- package/dist/reasoning/ban-logic/rules.d.ts +83 -0
- package/dist/reasoning/ban-logic/rules.d.ts.map +1 -0
- package/dist/reasoning/ban-logic/rules.js +409 -0
- package/dist/reasoning/ban-logic/rules.js.map +1 -0
- package/dist/reasoning/ban-logic/terms.d.ts +26 -0
- package/dist/reasoning/ban-logic/terms.d.ts.map +1 -0
- package/dist/reasoning/ban-logic/terms.js +262 -0
- package/dist/reasoning/ban-logic/terms.js.map +1 -0
- package/dist/reasoning/ban-logic/types.d.ts +107 -0
- package/dist/reasoning/ban-logic/types.d.ts.map +1 -0
- package/dist/reasoning/ban-logic/types.js +27 -0
- package/dist/reasoning/ban-logic/types.js.map +1 -0
- package/dist/reasoning/combinatorial-games/index.d.ts +105 -0
- package/dist/reasoning/combinatorial-games/index.d.ts.map +1 -0
- package/dist/reasoning/combinatorial-games/index.js +377 -0
- package/dist/reasoning/combinatorial-games/index.js.map +1 -0
- package/dist/reasoning/differential-privacy/index.d.ts +121 -0
- package/dist/reasoning/differential-privacy/index.d.ts.map +1 -0
- package/dist/reasoning/differential-privacy/index.js +417 -0
- package/dist/reasoning/differential-privacy/index.js.map +1 -0
- package/dist/reasoning/mechanism-design/auctions.d.ts +49 -0
- package/dist/reasoning/mechanism-design/auctions.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/auctions.js +179 -0
- package/dist/reasoning/mechanism-design/auctions.js.map +1 -0
- package/dist/reasoning/mechanism-design/index.d.ts +5 -0
- package/dist/reasoning/mechanism-design/index.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/index.js +39 -0
- package/dist/reasoning/mechanism-design/index.js.map +1 -0
- package/dist/reasoning/mechanism-design/myerson.d.ts +64 -0
- package/dist/reasoning/mechanism-design/myerson.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/myerson.js +253 -0
- package/dist/reasoning/mechanism-design/myerson.js.map +1 -0
- package/dist/reasoning/mechanism-design/types.d.ts +44 -0
- package/dist/reasoning/mechanism-design/types.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/types.js +22 -0
- package/dist/reasoning/mechanism-design/types.js.map +1 -0
- package/dist/reasoning/mechanism-design/vcg.d.ts +29 -0
- package/dist/reasoning/mechanism-design/vcg.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/vcg.js +305 -0
- package/dist/reasoning/mechanism-design/vcg.js.map +1 -0
- package/dist/reasoning/probabilistic/distributions.d.ts +44 -0
- package/dist/reasoning/probabilistic/distributions.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/distributions.js +207 -0
- package/dist/reasoning/probabilistic/distributions.js.map +1 -0
- package/dist/reasoning/probabilistic/examples.d.ts +31 -0
- package/dist/reasoning/probabilistic/examples.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/examples.js +85 -0
- package/dist/reasoning/probabilistic/examples.js.map +1 -0
- package/dist/reasoning/probabilistic/index.d.ts +6 -0
- package/dist/reasoning/probabilistic/index.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/index.js +42 -0
- package/dist/reasoning/probabilistic/index.js.map +1 -0
- package/dist/reasoning/probabilistic/inference.d.ts +45 -0
- package/dist/reasoning/probabilistic/inference.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/inference.js +579 -0
- package/dist/reasoning/probabilistic/inference.js.map +1 -0
- package/dist/reasoning/probabilistic/types.d.ts +153 -0
- package/dist/reasoning/probabilistic/types.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/types.js +37 -0
- package/dist/reasoning/probabilistic/types.js.map +1 -0
- package/dist/solver/smt-z3/index.d.ts +3 -0
- package/dist/solver/smt-z3/index.d.ts.map +1 -0
- package/dist/solver/smt-z3/index.js +11 -0
- package/dist/solver/smt-z3/index.js.map +1 -0
- package/dist/solver/smt-z3/types.d.ts +52 -0
- package/dist/solver/smt-z3/types.d.ts.map +1 -0
- package/dist/solver/smt-z3/types.js +6 -0
- package/dist/solver/smt-z3/types.js.map +1 -0
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts +88 -0
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -0
- package/dist/solver/smt-z3/z3-wasm-backend.js +437 -0
- package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -0
- package/dist/tests/logic/profiles/quantum/quantum.test.d.ts +2 -0
- package/dist/tests/logic/profiles/quantum/quantum.test.d.ts.map +1 -0
- package/dist/tests/logic/profiles/quantum/quantum.test.js +209 -0
- package/dist/tests/logic/profiles/quantum/quantum.test.js.map +1 -0
- package/dist/tests/proof-systems/certificate/certificate.test.d.ts +2 -0
- package/dist/tests/proof-systems/certificate/certificate.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/certificate/certificate.test.js +449 -0
- package/dist/tests/proof-systems/certificate/certificate.test.js.map +1 -0
- package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts +2 -0
- package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/ban-logic/ban-logic.test.js +270 -0
- package/dist/tests/reasoning/ban-logic/ban-logic.test.js.map +1 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts +2 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts.map +1 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js +203 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js.map +1 -0
- package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts +2 -0
- package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts.map +1 -0
- package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js +388 -0
- package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js.map +1 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts +2 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts.map +1 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js +290 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js.map +1 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts +2 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.js +370 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.js.map +1 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts +2 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts.map +1 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js +394 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -0
- package/dist/tests/tooling/mathlib/mathlib.test.d.ts +2 -0
- package/dist/tests/tooling/mathlib/mathlib.test.d.ts.map +1 -0
- package/dist/tests/tooling/mathlib/mathlib.test.js +214 -0
- package/dist/tests/tooling/mathlib/mathlib.test.js.map +1 -0
- package/dist/tests/tooling/proof-guidance/features.test.d.ts +2 -0
- package/dist/tests/tooling/proof-guidance/features.test.d.ts.map +1 -0
- package/dist/tests/tooling/proof-guidance/features.test.js +72 -0
- package/dist/tests/tooling/proof-guidance/features.test.js.map +1 -0
- package/dist/tests/tooling/proof-guidance/model.test.d.ts +2 -0
- package/dist/tests/tooling/proof-guidance/model.test.d.ts.map +1 -0
- package/dist/tests/tooling/proof-guidance/model.test.js +165 -0
- package/dist/tests/tooling/proof-guidance/model.test.js.map +1 -0
- package/dist/tests/tooling/proof-guidance/search.test.d.ts +2 -0
- package/dist/tests/tooling/proof-guidance/search.test.d.ts.map +1 -0
- package/dist/tests/tooling/proof-guidance/search.test.js +238 -0
- package/dist/tests/tooling/proof-guidance/search.test.js.map +1 -0
- package/dist/tests/type-theory/cubical/cubical.test.d.ts +2 -0
- package/dist/tests/type-theory/cubical/cubical.test.d.ts.map +1 -0
- package/dist/tests/type-theory/cubical/cubical.test.js +207 -0
- package/dist/tests/type-theory/cubical/cubical.test.js.map +1 -0
- package/dist/tests/type-theory/effects/effects.test.d.ts +2 -0
- package/dist/tests/type-theory/effects/effects.test.d.ts.map +1 -0
- package/dist/tests/type-theory/effects/effects.test.js +242 -0
- package/dist/tests/type-theory/effects/effects.test.js.map +1 -0
- package/dist/tooling/mathlib/group.d.ts +27 -0
- package/dist/tooling/mathlib/group.d.ts.map +1 -0
- package/dist/tooling/mathlib/group.js +89 -0
- package/dist/tooling/mathlib/group.js.map +1 -0
- package/dist/tooling/mathlib/index.d.ts +8 -0
- package/dist/tooling/mathlib/index.d.ts.map +1 -0
- package/dist/tooling/mathlib/index.js +40 -0
- package/dist/tooling/mathlib/index.js.map +1 -0
- package/dist/tooling/mathlib/instances.d.ts +29 -0
- package/dist/tooling/mathlib/instances.d.ts.map +1 -0
- package/dist/tooling/mathlib/instances.js +139 -0
- package/dist/tooling/mathlib/instances.js.map +1 -0
- package/dist/tooling/mathlib/lemmas.d.ts +3 -0
- package/dist/tooling/mathlib/lemmas.d.ts.map +1 -0
- package/dist/tooling/mathlib/lemmas.js +72 -0
- package/dist/tooling/mathlib/lemmas.js.map +1 -0
- package/dist/tooling/mathlib/order.d.ts +29 -0
- package/dist/tooling/mathlib/order.d.ts.map +1 -0
- package/dist/tooling/mathlib/order.js +91 -0
- package/dist/tooling/mathlib/order.js.map +1 -0
- package/dist/tooling/mathlib/ring.d.ts +15 -0
- package/dist/tooling/mathlib/ring.d.ts.map +1 -0
- package/dist/tooling/mathlib/ring.js +91 -0
- package/dist/tooling/mathlib/ring.js.map +1 -0
- package/dist/tooling/mathlib/types.d.ts +62 -0
- package/dist/tooling/mathlib/types.d.ts.map +1 -0
- package/dist/tooling/mathlib/types.js +7 -0
- package/dist/tooling/mathlib/types.js.map +1 -0
- package/dist/tooling/proof-guidance/features.d.ts +10 -0
- package/dist/tooling/proof-guidance/features.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/features.js +97 -0
- package/dist/tooling/proof-guidance/features.js.map +1 -0
- package/dist/tooling/proof-guidance/index.d.ts +5 -0
- package/dist/tooling/proof-guidance/index.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/index.js +25 -0
- package/dist/tooling/proof-guidance/index.js.map +1 -0
- package/dist/tooling/proof-guidance/model.d.ts +42 -0
- package/dist/tooling/proof-guidance/model.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/model.js +149 -0
- package/dist/tooling/proof-guidance/model.js.map +1 -0
- package/dist/tooling/proof-guidance/search.d.ts +7 -0
- package/dist/tooling/proof-guidance/search.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/search.js +102 -0
- package/dist/tooling/proof-guidance/search.js.map +1 -0
- package/dist/tooling/proof-guidance/types.d.ts +77 -0
- package/dist/tooling/proof-guidance/types.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/types.js +8 -0
- package/dist/tooling/proof-guidance/types.js.map +1 -0
- package/dist/type-theory/cubical/equality.d.ts +4 -0
- package/dist/type-theory/cubical/equality.d.ts.map +1 -0
- package/dist/type-theory/cubical/equality.js +78 -0
- package/dist/type-theory/cubical/equality.js.map +1 -0
- package/dist/type-theory/cubical/index.d.ts +14 -0
- package/dist/type-theory/cubical/index.d.ts.map +1 -0
- package/dist/type-theory/cubical/index.js +71 -0
- package/dist/type-theory/cubical/index.js.map +1 -0
- package/dist/type-theory/cubical/infer.d.ts +18 -0
- package/dist/type-theory/cubical/infer.d.ts.map +1 -0
- package/dist/type-theory/cubical/infer.js +241 -0
- package/dist/type-theory/cubical/infer.js.map +1 -0
- package/dist/type-theory/cubical/interval.d.ts +12 -0
- package/dist/type-theory/cubical/interval.d.ts.map +1 -0
- package/dist/type-theory/cubical/interval.js +118 -0
- package/dist/type-theory/cubical/interval.js.map +1 -0
- package/dist/type-theory/cubical/normalize.d.ts +5 -0
- package/dist/type-theory/cubical/normalize.d.ts.map +1 -0
- package/dist/type-theory/cubical/normalize.js +191 -0
- package/dist/type-theory/cubical/normalize.js.map +1 -0
- package/dist/type-theory/cubical/path-algebra.d.ts +12 -0
- package/dist/type-theory/cubical/path-algebra.d.ts.map +1 -0
- package/dist/type-theory/cubical/path-algebra.js +109 -0
- package/dist/type-theory/cubical/path-algebra.js.map +1 -0
- package/dist/type-theory/cubical/substitute.d.ts +3 -0
- package/dist/type-theory/cubical/substitute.d.ts.map +1 -0
- package/dist/type-theory/cubical/substitute.js +109 -0
- package/dist/type-theory/cubical/substitute.js.map +1 -0
- package/dist/type-theory/cubical/types.d.ts +77 -0
- package/dist/type-theory/cubical/types.d.ts.map +1 -0
- package/dist/type-theory/cubical/types.js +258 -0
- package/dist/type-theory/cubical/types.js.map +1 -0
- package/dist/type-theory/effects/core.d.ts +27 -0
- package/dist/type-theory/effects/core.d.ts.map +1 -0
- package/dist/type-theory/effects/core.js +79 -0
- package/dist/type-theory/effects/core.js.map +1 -0
- package/dist/type-theory/effects/exception.d.ts +18 -0
- package/dist/type-theory/effects/exception.d.ts.map +1 -0
- package/dist/type-theory/effects/exception.js +59 -0
- package/dist/type-theory/effects/exception.js.map +1 -0
- package/dist/type-theory/effects/index.d.ts +11 -0
- package/dist/type-theory/effects/index.d.ts.map +1 -0
- package/dist/type-theory/effects/index.js +50 -0
- package/dist/type-theory/effects/index.js.map +1 -0
- package/dist/type-theory/effects/reader.d.ts +20 -0
- package/dist/type-theory/effects/reader.d.ts.map +1 -0
- package/dist/type-theory/effects/reader.js +62 -0
- package/dist/type-theory/effects/reader.js.map +1 -0
- package/dist/type-theory/effects/state.d.ts +31 -0
- package/dist/type-theory/effects/state.d.ts.map +1 -0
- package/dist/type-theory/effects/state.js +91 -0
- package/dist/type-theory/effects/state.js.map +1 -0
- package/dist/type-theory/effects/types.d.ts +45 -0
- package/dist/type-theory/effects/types.d.ts.map +1 -0
- package/dist/type-theory/effects/types.js +21 -0
- package/dist/type-theory/effects/types.js.map +1 -0
- package/dist/type-theory/effects/writer.d.ts +30 -0
- package/dist/type-theory/effects/writer.d.ts.map +1 -0
- package/dist/type-theory/effects/writer.js +79 -0
- package/dist/type-theory/effects/writer.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auctions.js","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/auctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { Agent, MechanismOutcome, AuctionResult, SealedBidAuction, BidderDistribution, } from './types';
|
|
2
|
+
export { vcgMechanism, socialWelfare, isStrategyProof } from './vcg';
|
|
3
|
+
export { firstPriceSealed, secondPriceSealed, englishAuction, dutchAuction } from './auctions';
|
|
4
|
+
export { myersonOptimal, virtualValuation, findReserve, expectedRevenue, sampleFromDistribution, uniformDistribution, } from './myerson';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/index.ts"],"names":[],"mappings":"AAoBA,YAAY,EACV,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Mechanism design — barrel público
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Implementación de los mecanismos canónicos de la teoría:
|
|
7
|
+
//
|
|
8
|
+
// - VCG (Vickrey-Clarke-Groves): allocation que maximiza welfare,
|
|
9
|
+
// pagos por externalidad. DSIC.
|
|
10
|
+
// - First-price sealed-bid: ganador paga su bid.
|
|
11
|
+
// - Second-price sealed-bid (Vickrey): ganador paga el segundo
|
|
12
|
+
// precio. DSIC. Coincide con VCG para 1 item.
|
|
13
|
+
// - English ascending: reloj sube, sale el último parado.
|
|
14
|
+
// - Dutch descending: reloj baja, gana el primero en aceptar.
|
|
15
|
+
// - Myerson optimal auction: maximiza expected revenue via virtual
|
|
16
|
+
// valuations + reserve price.
|
|
17
|
+
//
|
|
18
|
+
// Helpers:
|
|
19
|
+
// - socialWelfare, isStrategyProof (empírico)
|
|
20
|
+
// - virtualValuation, expectedRevenue (Monte Carlo)
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.uniformDistribution = exports.sampleFromDistribution = exports.expectedRevenue = exports.findReserve = exports.virtualValuation = exports.myersonOptimal = exports.dutchAuction = exports.englishAuction = exports.secondPriceSealed = exports.firstPriceSealed = exports.isStrategyProof = exports.socialWelfare = exports.vcgMechanism = void 0;
|
|
23
|
+
var vcg_1 = require("./vcg");
|
|
24
|
+
Object.defineProperty(exports, "vcgMechanism", { enumerable: true, get: function () { return vcg_1.vcgMechanism; } });
|
|
25
|
+
Object.defineProperty(exports, "socialWelfare", { enumerable: true, get: function () { return vcg_1.socialWelfare; } });
|
|
26
|
+
Object.defineProperty(exports, "isStrategyProof", { enumerable: true, get: function () { return vcg_1.isStrategyProof; } });
|
|
27
|
+
var auctions_1 = require("./auctions");
|
|
28
|
+
Object.defineProperty(exports, "firstPriceSealed", { enumerable: true, get: function () { return auctions_1.firstPriceSealed; } });
|
|
29
|
+
Object.defineProperty(exports, "secondPriceSealed", { enumerable: true, get: function () { return auctions_1.secondPriceSealed; } });
|
|
30
|
+
Object.defineProperty(exports, "englishAuction", { enumerable: true, get: function () { return auctions_1.englishAuction; } });
|
|
31
|
+
Object.defineProperty(exports, "dutchAuction", { enumerable: true, get: function () { return auctions_1.dutchAuction; } });
|
|
32
|
+
var myerson_1 = require("./myerson");
|
|
33
|
+
Object.defineProperty(exports, "myersonOptimal", { enumerable: true, get: function () { return myerson_1.myersonOptimal; } });
|
|
34
|
+
Object.defineProperty(exports, "virtualValuation", { enumerable: true, get: function () { return myerson_1.virtualValuation; } });
|
|
35
|
+
Object.defineProperty(exports, "findReserve", { enumerable: true, get: function () { return myerson_1.findReserve; } });
|
|
36
|
+
Object.defineProperty(exports, "expectedRevenue", { enumerable: true, get: function () { return myerson_1.expectedRevenue; } });
|
|
37
|
+
Object.defineProperty(exports, "sampleFromDistribution", { enumerable: true, get: function () { return myerson_1.sampleFromDistribution; } });
|
|
38
|
+
Object.defineProperty(exports, "uniformDistribution", { enumerable: true, get: function () { return myerson_1.uniformDistribution; } });
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oCAAoC;AACpC,+DAA+D;AAC/D,EAAE;AACF,2DAA2D;AAC3D,EAAE;AACF,oEAAoE;AACpE,oCAAoC;AACpC,mDAAmD;AACnD,iEAAiE;AACjE,kDAAkD;AAClD,4DAA4D;AAC5D,gEAAgE;AAChE,qEAAqE;AACrE,kCAAkC;AAClC,EAAE;AACF,WAAW;AACX,gDAAgD;AAChD,sDAAsD;;;AAUtD,6BAAqE;AAA5D,mGAAA,YAAY,OAAA;AAAE,oGAAA,aAAa,OAAA;AAAE,sGAAA,eAAe,OAAA;AAErD,uCAA+F;AAAtF,4GAAA,gBAAgB,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,wGAAA,YAAY,OAAA;AAE1E,qCAOmB;AANjB,yGAAA,cAAc,OAAA;AACd,2GAAA,gBAAgB,OAAA;AAChB,sGAAA,WAAW,OAAA;AACX,0GAAA,eAAe,OAAA;AACf,iHAAA,sBAAsB,OAAA;AACtB,8GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { BidderDistribution, AuctionResult } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Virtual valuation φ(v) = v - (1 - F(v)) / f(v).
|
|
4
|
+
*
|
|
5
|
+
* Si f(v) ≈ 0 retornamos +Infinity (límite del término penalty).
|
|
6
|
+
* Si v cae fuera del dominio, devolvemos -Infinity (no participa).
|
|
7
|
+
*/
|
|
8
|
+
export declare function virtualValuation(v: number, dist: BidderDistribution): number;
|
|
9
|
+
/**
|
|
10
|
+
* Resuelve φ(r) = 0 por bisección en el dominio de la distribución.
|
|
11
|
+
*
|
|
12
|
+
* Si φ(lo) >= 0, devuelve lo. Si φ(hi) <= 0, devuelve hi. Si no, busca
|
|
13
|
+
* con tolerancia 1e-8 en 80 iteraciones.
|
|
14
|
+
*
|
|
15
|
+
* Asume regularidad de la distribución (φ monótona creciente). En
|
|
16
|
+
* uniform[0,1]: φ(v) = 2v - 1, raíz en 1/2. ✔
|
|
17
|
+
*/
|
|
18
|
+
export declare function findReserve(dist: BidderDistribution): number;
|
|
19
|
+
/**
|
|
20
|
+
* Myerson optimal auction (single-item).
|
|
21
|
+
*
|
|
22
|
+
* - Si todos los φ_i(bid_i) son negativos → no se vende. winner='',
|
|
23
|
+
* payment=0, reserve = φ_i^(-1)(0) del primer bidder (referencia).
|
|
24
|
+
*
|
|
25
|
+
* - Si el ganador es bidder i (max φ), paga el menor v' tal que
|
|
26
|
+
* reportar v' lo habría hecho ganar:
|
|
27
|
+
*
|
|
28
|
+
* paymentValue = max( reserve_i, min_v { v : φ_i(v) >= max_{j≠i} φ_j(bid_j) } )
|
|
29
|
+
*
|
|
30
|
+
* En el caso IID con simétria, esto es:
|
|
31
|
+
* paymentValue = max( reserve, secondHighestBid )
|
|
32
|
+
*
|
|
33
|
+
* que es exactamente Vickrey con reserve.
|
|
34
|
+
*/
|
|
35
|
+
export declare function myersonOptimal(bids: Map<string, number>, distributions: Map<string, BidderDistribution>): {
|
|
36
|
+
winner: string;
|
|
37
|
+
payment: number;
|
|
38
|
+
reserve: number;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Muestrea una valuation de una distribución por inverse-CDF
|
|
42
|
+
* sampling. Usamos bisección sobre F.
|
|
43
|
+
*/
|
|
44
|
+
export declare function sampleFromDistribution(dist: BidderDistribution, u: number): number;
|
|
45
|
+
/**
|
|
46
|
+
* Expected revenue de un mechanism via Monte Carlo: muestreamos
|
|
47
|
+
* `samples` perfiles de bids (cada bidder draw de su distribución
|
|
48
|
+
* independientemente, asumiendo truthful bidding para 2nd-price /
|
|
49
|
+
* Myerson, o equilibrium bidding aproximado para 1st-price), corremos
|
|
50
|
+
* el mechanism y promediamos el payment del ganador.
|
|
51
|
+
*
|
|
52
|
+
* Nota: para 1st-price con IID uniform[0,1] y n bidders, el bid
|
|
53
|
+
* de equilibrio es b(v) = (n-1)/n · v. El caller debe pasar un
|
|
54
|
+
* mechanism que ya implemente ese mapping si quiere comparar contra
|
|
55
|
+
* 2nd-price truthful.
|
|
56
|
+
*/
|
|
57
|
+
export declare function expectedRevenue(mechanism: (bids: Map<string, number>) => AuctionResult, distributions: Map<string, BidderDistribution>, samples?: number): number;
|
|
58
|
+
/**
|
|
59
|
+
* Helper: distribución uniform sobre [a, b]. Útil para tests.
|
|
60
|
+
* (No exportada en index — solo helper interno aquí; los tests
|
|
61
|
+
* pueden importarlo directamente.)
|
|
62
|
+
*/
|
|
63
|
+
export declare function uniformDistribution(a: number, b: number): BidderDistribution;
|
|
64
|
+
//# sourceMappingURL=myerson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myerson.d.ts","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/myerson.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAW5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAiB5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC7C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoDtD;AAyBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAclF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,aAAa,EACvD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,OAAO,GAAE,MAAa,GACrB,MAAM,CAeR;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAe5E"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Myerson optimal auction + revenue equivalence
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Myerson (1981): para vender 1 item a `n` bidders independientes con
|
|
7
|
+
// valuations privadas de distribuciones regulares F_i, el mechanism
|
|
8
|
+
// óptimo en expected revenue es:
|
|
9
|
+
//
|
|
10
|
+
// 1. Calcular virtual valuation φ_i(v) = v - (1 - F_i(v)) / f_i(v).
|
|
11
|
+
// 2. Asignar al bidder con MAYOR φ_i (si > 0, si no, no asignar →
|
|
12
|
+
// reserve price implícito r_i tal que φ_i(r_i) = 0).
|
|
13
|
+
// 3. Cobrar al ganador el menor bid que lo habría hecho ganar
|
|
14
|
+
// (Vickrey-style payment sobre virtual valuations).
|
|
15
|
+
//
|
|
16
|
+
// Para distribuciones simétricas (todos los bidders i.i.d. con misma
|
|
17
|
+
// F), φ es la misma función para todos; el mechanism colapsa a una
|
|
18
|
+
// second-price auction con reserve price r = φ^(-1)(0).
|
|
19
|
+
//
|
|
20
|
+
// Revenue equivalence theorem: en cualquier mechanism que (a) asigne
|
|
21
|
+
// al bidder con mayor valuation y (b) dé utilidad 0 al bidder con
|
|
22
|
+
// valuation 0 ("regularity boundary"), el expected revenue es el
|
|
23
|
+
// mismo. → 1st-price y 2nd-price tienen igual revenue esperado bajo
|
|
24
|
+
// IID.
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.virtualValuation = virtualValuation;
|
|
27
|
+
exports.findReserve = findReserve;
|
|
28
|
+
exports.myersonOptimal = myersonOptimal;
|
|
29
|
+
exports.sampleFromDistribution = sampleFromDistribution;
|
|
30
|
+
exports.expectedRevenue = expectedRevenue;
|
|
31
|
+
exports.uniformDistribution = uniformDistribution;
|
|
32
|
+
/**
|
|
33
|
+
* Virtual valuation φ(v) = v - (1 - F(v)) / f(v).
|
|
34
|
+
*
|
|
35
|
+
* Si f(v) ≈ 0 retornamos +Infinity (límite del término penalty).
|
|
36
|
+
* Si v cae fuera del dominio, devolvemos -Infinity (no participa).
|
|
37
|
+
*/
|
|
38
|
+
function virtualValuation(v, dist) {
|
|
39
|
+
const [lo, hi] = dist.domain;
|
|
40
|
+
if (v < lo || v > hi)
|
|
41
|
+
return -Infinity;
|
|
42
|
+
const f = dist.pdf(v);
|
|
43
|
+
if (!Number.isFinite(f) || Math.abs(f) < 1e-15) {
|
|
44
|
+
// En el borde superior, F(v) = 1 → (1-F)/f = 0/0; tomamos v como límite.
|
|
45
|
+
if (Math.abs(1 - dist.cdf(v)) < 1e-12)
|
|
46
|
+
return v;
|
|
47
|
+
return v;
|
|
48
|
+
}
|
|
49
|
+
const F = dist.cdf(v);
|
|
50
|
+
return v - (1 - F) / f;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resuelve φ(r) = 0 por bisección en el dominio de la distribución.
|
|
54
|
+
*
|
|
55
|
+
* Si φ(lo) >= 0, devuelve lo. Si φ(hi) <= 0, devuelve hi. Si no, busca
|
|
56
|
+
* con tolerancia 1e-8 en 80 iteraciones.
|
|
57
|
+
*
|
|
58
|
+
* Asume regularidad de la distribución (φ monótona creciente). En
|
|
59
|
+
* uniform[0,1]: φ(v) = 2v - 1, raíz en 1/2. ✔
|
|
60
|
+
*/
|
|
61
|
+
function findReserve(dist) {
|
|
62
|
+
const [lo, hi] = dist.domain;
|
|
63
|
+
const phiLo = virtualValuation(lo, dist);
|
|
64
|
+
const phiHi = virtualValuation(hi, dist);
|
|
65
|
+
if (phiLo >= 0)
|
|
66
|
+
return lo;
|
|
67
|
+
if (phiHi <= 0)
|
|
68
|
+
return hi;
|
|
69
|
+
let l = lo;
|
|
70
|
+
let h = hi;
|
|
71
|
+
for (let i = 0; i < 80; i++) {
|
|
72
|
+
const m = (l + h) / 2;
|
|
73
|
+
const phi = virtualValuation(m, dist);
|
|
74
|
+
if (phi > 0)
|
|
75
|
+
h = m;
|
|
76
|
+
else
|
|
77
|
+
l = m;
|
|
78
|
+
if (h - l < 1e-9)
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
return (l + h) / 2;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Myerson optimal auction (single-item).
|
|
85
|
+
*
|
|
86
|
+
* - Si todos los φ_i(bid_i) son negativos → no se vende. winner='',
|
|
87
|
+
* payment=0, reserve = φ_i^(-1)(0) del primer bidder (referencia).
|
|
88
|
+
*
|
|
89
|
+
* - Si el ganador es bidder i (max φ), paga el menor v' tal que
|
|
90
|
+
* reportar v' lo habría hecho ganar:
|
|
91
|
+
*
|
|
92
|
+
* paymentValue = max( reserve_i, min_v { v : φ_i(v) >= max_{j≠i} φ_j(bid_j) } )
|
|
93
|
+
*
|
|
94
|
+
* En el caso IID con simétria, esto es:
|
|
95
|
+
* paymentValue = max( reserve, secondHighestBid )
|
|
96
|
+
*
|
|
97
|
+
* que es exactamente Vickrey con reserve.
|
|
98
|
+
*/
|
|
99
|
+
function myersonOptimal(bids, distributions) {
|
|
100
|
+
const ids = [...bids.keys()].sort();
|
|
101
|
+
if (ids.length === 0) {
|
|
102
|
+
return { winner: '', payment: 0, reserve: 0 };
|
|
103
|
+
}
|
|
104
|
+
// Buscamos el bidder con mayor virtual valuation positivo.
|
|
105
|
+
let winner = '';
|
|
106
|
+
let bestPhi = 0; // estricto > 0 — el reserve viene de φ(r) = 0
|
|
107
|
+
let secondPhi = 0;
|
|
108
|
+
for (const id of ids) {
|
|
109
|
+
const b = bids.get(id) ?? 0;
|
|
110
|
+
const dist = distributions.get(id);
|
|
111
|
+
if (!dist)
|
|
112
|
+
continue;
|
|
113
|
+
const phi = virtualValuation(b, dist);
|
|
114
|
+
if (phi > bestPhi) {
|
|
115
|
+
secondPhi = bestPhi;
|
|
116
|
+
bestPhi = phi;
|
|
117
|
+
winner = id;
|
|
118
|
+
}
|
|
119
|
+
else if (phi > secondPhi) {
|
|
120
|
+
secondPhi = phi;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Reserve de referencia: del primer bidder (todos los i.i.d. comparten).
|
|
124
|
+
const firstDist = distributions.get(ids[0]);
|
|
125
|
+
if (!firstDist) {
|
|
126
|
+
return { winner: '', payment: 0, reserve: 0 };
|
|
127
|
+
}
|
|
128
|
+
const referenceReserve = findReserve(firstDist);
|
|
129
|
+
if (winner === '') {
|
|
130
|
+
return { winner: '', payment: 0, reserve: referenceReserve };
|
|
131
|
+
}
|
|
132
|
+
const winnerDist = distributions.get(winner);
|
|
133
|
+
if (!winnerDist) {
|
|
134
|
+
return { winner: '', payment: 0, reserve: referenceReserve };
|
|
135
|
+
}
|
|
136
|
+
const winnerReserve = findReserve(winnerDist);
|
|
137
|
+
// Pago: el menor valor v* tal que φ_winner(v*) >= max(secondPhi, 0).
|
|
138
|
+
// En IID: φ es monótona, así que invertimos por bisección.
|
|
139
|
+
const targetPhi = Math.max(secondPhi, 0);
|
|
140
|
+
let payment = invertVirtual(winnerDist, targetPhi);
|
|
141
|
+
if (payment < winnerReserve)
|
|
142
|
+
payment = winnerReserve;
|
|
143
|
+
// Sanity: el pago no puede exceder el bid del ganador.
|
|
144
|
+
const winnerBid = bids.get(winner) ?? 0;
|
|
145
|
+
if (payment > winnerBid)
|
|
146
|
+
payment = winnerBid;
|
|
147
|
+
return { winner, payment, reserve: winnerReserve };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Inverte φ: encuentra v* tal que φ(v*) = target. Asume regularidad.
|
|
151
|
+
* Si target <= φ(lo), devuelve lo. Si target >= φ(hi), devuelve hi.
|
|
152
|
+
*/
|
|
153
|
+
function invertVirtual(dist, target) {
|
|
154
|
+
const [lo, hi] = dist.domain;
|
|
155
|
+
const phiLo = virtualValuation(lo, dist);
|
|
156
|
+
const phiHi = virtualValuation(hi, dist);
|
|
157
|
+
if (target <= phiLo)
|
|
158
|
+
return lo;
|
|
159
|
+
if (target >= phiHi)
|
|
160
|
+
return hi;
|
|
161
|
+
let l = lo;
|
|
162
|
+
let h = hi;
|
|
163
|
+
for (let i = 0; i < 80; i++) {
|
|
164
|
+
const m = (l + h) / 2;
|
|
165
|
+
const phi = virtualValuation(m, dist);
|
|
166
|
+
if (phi >= target)
|
|
167
|
+
h = m;
|
|
168
|
+
else
|
|
169
|
+
l = m;
|
|
170
|
+
if (h - l < 1e-9)
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
return (l + h) / 2;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Muestrea una valuation de una distribución por inverse-CDF
|
|
177
|
+
* sampling. Usamos bisección sobre F.
|
|
178
|
+
*/
|
|
179
|
+
function sampleFromDistribution(dist, u) {
|
|
180
|
+
// u ∈ [0,1]. Encontrar v con F(v) = u.
|
|
181
|
+
const [lo, hi] = dist.domain;
|
|
182
|
+
if (u <= 0)
|
|
183
|
+
return lo;
|
|
184
|
+
if (u >= 1)
|
|
185
|
+
return hi;
|
|
186
|
+
let l = lo;
|
|
187
|
+
let h = hi;
|
|
188
|
+
for (let i = 0; i < 80; i++) {
|
|
189
|
+
const m = (l + h) / 2;
|
|
190
|
+
if (dist.cdf(m) > u)
|
|
191
|
+
h = m;
|
|
192
|
+
else
|
|
193
|
+
l = m;
|
|
194
|
+
if (h - l < 1e-9)
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
return (l + h) / 2;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Expected revenue de un mechanism via Monte Carlo: muestreamos
|
|
201
|
+
* `samples` perfiles de bids (cada bidder draw de su distribución
|
|
202
|
+
* independientemente, asumiendo truthful bidding para 2nd-price /
|
|
203
|
+
* Myerson, o equilibrium bidding aproximado para 1st-price), corremos
|
|
204
|
+
* el mechanism y promediamos el payment del ganador.
|
|
205
|
+
*
|
|
206
|
+
* Nota: para 1st-price con IID uniform[0,1] y n bidders, el bid
|
|
207
|
+
* de equilibrio es b(v) = (n-1)/n · v. El caller debe pasar un
|
|
208
|
+
* mechanism que ya implemente ese mapping si quiere comparar contra
|
|
209
|
+
* 2nd-price truthful.
|
|
210
|
+
*/
|
|
211
|
+
function expectedRevenue(mechanism, distributions, samples = 5000) {
|
|
212
|
+
const ids = [...distributions.keys()].sort();
|
|
213
|
+
let totalRevenue = 0;
|
|
214
|
+
for (let s = 0; s < samples; s++) {
|
|
215
|
+
const bids = new Map();
|
|
216
|
+
for (const id of ids) {
|
|
217
|
+
const dist = distributions.get(id);
|
|
218
|
+
if (!dist)
|
|
219
|
+
continue;
|
|
220
|
+
const u = Math.random();
|
|
221
|
+
bids.set(id, sampleFromDistribution(dist, u));
|
|
222
|
+
}
|
|
223
|
+
const r = mechanism(bids);
|
|
224
|
+
totalRevenue += r.payment;
|
|
225
|
+
}
|
|
226
|
+
return totalRevenue / samples;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Helper: distribución uniform sobre [a, b]. Útil para tests.
|
|
230
|
+
* (No exportada en index — solo helper interno aquí; los tests
|
|
231
|
+
* pueden importarlo directamente.)
|
|
232
|
+
*/
|
|
233
|
+
function uniformDistribution(a, b) {
|
|
234
|
+
if (b <= a)
|
|
235
|
+
throw new Error('uniformDistribution: b must be > a');
|
|
236
|
+
const span = b - a;
|
|
237
|
+
return {
|
|
238
|
+
domain: [a, b],
|
|
239
|
+
cdf: (v) => {
|
|
240
|
+
if (v <= a)
|
|
241
|
+
return 0;
|
|
242
|
+
if (v >= b)
|
|
243
|
+
return 1;
|
|
244
|
+
return (v - a) / span;
|
|
245
|
+
},
|
|
246
|
+
pdf: (v) => {
|
|
247
|
+
if (v < a || v > b)
|
|
248
|
+
return 0;
|
|
249
|
+
return 1 / span;
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=myerson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myerson.js","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/myerson.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Un agente con valuation sobre outcomes. Cada outcome se identifica
|
|
3
|
+
* con un string (típicamente itemId, pero puede codificar bundles
|
|
4
|
+
* para combinatorial auctions, e.g. "A+B").
|
|
5
|
+
*/
|
|
6
|
+
export interface Agent {
|
|
7
|
+
id: string;
|
|
8
|
+
/** valuation.get(outcome) = utilidad si recibe ese outcome. Default 0 si missing. */
|
|
9
|
+
valuation: Map<string, number>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resultado de un mechanism: quién se queda con qué y cuánto paga.
|
|
13
|
+
*/
|
|
14
|
+
export interface MechanismOutcome {
|
|
15
|
+
/** allocation.get(agentId) = item que recibe (o undefined si no recibe). */
|
|
16
|
+
allocation: Map<string, string>;
|
|
17
|
+
/** payments.get(agentId) = pago del agente al mechanism (>= 0 típicamente). */
|
|
18
|
+
payments: Map<string, number>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resultado de una single-item auction.
|
|
22
|
+
*/
|
|
23
|
+
export interface AuctionResult {
|
|
24
|
+
/** Id del ganador (o '' si nadie supera el reserve / no hay bids). */
|
|
25
|
+
winner: string;
|
|
26
|
+
/** Pago del ganador. 0 si no hubo ganador. */
|
|
27
|
+
payment: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Auction con bids sealed (cada bidder reporta un valor secreto).
|
|
31
|
+
*/
|
|
32
|
+
export interface SealedBidAuction {
|
|
33
|
+
bids: Map<string, number>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Distribución (i.i.d. por bidder) sobre la valuation. Necesitamos CDF
|
|
37
|
+
* y PDF en cerrado para Myerson; el dominio acota el soporte.
|
|
38
|
+
*/
|
|
39
|
+
export interface BidderDistribution {
|
|
40
|
+
cdf: (v: number) => number;
|
|
41
|
+
pdf: (v: number) => number;
|
|
42
|
+
domain: [number, number];
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/types.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,qFAAqF;IACrF,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+EAA+E;IAC/E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Mechanism design — tipos compartidos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Modelamos mechanism design discreto sobre un conjunto finito de
|
|
7
|
+
// outcomes (típicamente: asignar ítems a agentes). Cada agente reporta
|
|
8
|
+
// una valuation `Map<outcomeId, number>`. El mechanism elige una
|
|
9
|
+
// allocation y cobra pagos.
|
|
10
|
+
//
|
|
11
|
+
// El bundle de un agente en una allocation es el conjunto de outcomes
|
|
12
|
+
// que se le asignan. Modelamos allocation como `Map<agentId, itemId>`
|
|
13
|
+
// para el caso single-unit (cada item a un solo agente). Para
|
|
14
|
+
// combinatorial auctions se generaliza con bundles, pero el `MechanismOutcome`
|
|
15
|
+
// público mantiene el tipo Map<string,string> según contrato.
|
|
16
|
+
//
|
|
17
|
+
// Los pagos son no-negativos cuando el mechanism es individually
|
|
18
|
+
// rational; aceptamos negativos en VCG con bundles porque las pivots
|
|
19
|
+
// pueden compensar (típicamente VCG cobra >= 0 si la valuation es
|
|
20
|
+
// monotónica, lo que asumimos por construcción de ejemplos).
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,+DAA+D;AAC/D,EAAE;AACF,kEAAkE;AAClE,uEAAuE;AACvE,iEAAiE;AACjE,4BAA4B;AAC5B,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,8DAA8D;AAC9D,+EAA+E;AAC/E,8DAA8D;AAC9D,EAAE;AACF,iEAAiE;AACjE,qEAAqE;AACrE,kEAAkE;AAClE,6DAA6D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Agent, MechanismOutcome } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* VCG mechanism: allocation maximiza welfare; pago de cada agente =
|
|
4
|
+
* externalidad = (welfare óptimo de los demás cuando él NO participa)
|
|
5
|
+
* - (welfare de los demás en la allocation elegida).
|
|
6
|
+
*
|
|
7
|
+
* Devuelve allocation y payments. Payments son ≥ 0 si valuations son
|
|
8
|
+
* monotónicas (las nuestras lo son).
|
|
9
|
+
*/
|
|
10
|
+
export declare function vcgMechanism(agents: Agent[], items: string[]): MechanismOutcome;
|
|
11
|
+
/**
|
|
12
|
+
* Welfare social bajo una allocation: suma de valuations de los agentes
|
|
13
|
+
* por lo que recibieron.
|
|
14
|
+
*/
|
|
15
|
+
export declare function socialWelfare(outcome: MechanismOutcome, agents: Agent[]): number;
|
|
16
|
+
/**
|
|
17
|
+
* Strategy-proofness empírica: tomamos `samples` reportes aleatorios de
|
|
18
|
+
* un agente (manteniendo a los demás truthful), corremos el mechanism,
|
|
19
|
+
* y verificamos que la utilidad del agente que miente no supere la
|
|
20
|
+
* utilidad reportando truthfully. Si para alguna sample el misreport
|
|
21
|
+
* mejora estrictamente, retornamos false.
|
|
22
|
+
*
|
|
23
|
+
* Utilidad cuasi-lineal: v(allocation_i) - payment_i.
|
|
24
|
+
*
|
|
25
|
+
* Esto es probabilístico: con `samples=0` no chequeamos nada y devolvemos
|
|
26
|
+
* true. Útil sobretodo para testing.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isStrategyProof(mechanism: (agents: Agent[]) => MechanismOutcome, samples?: number): boolean;
|
|
29
|
+
//# sourceMappingURL=vcg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcg.d.ts","sourceRoot":"","sources":["../../../src/reasoning/mechanism-design/vcg.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA4KvD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA2B/E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAOhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,gBAAgB,EAChD,OAAO,GAAE,MAAW,GACnB,OAAO,CAyDT"}
|