Reference · Lemmas behind operations-research checks
rainbow.math.lemmas.vickrey-dsic
General lemmas: vickrey dsic. The mathematical facts the corresponding checks rest on, each checked by the kernel.
signed/vickrey-others-lose
signed/vickrey-others-lose : (w : ℕ → ℚ) (n : ℕ) (hw01 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), w idx · (1 + signed/negate (w idx)) = 0) (hsum : signed/expr-sum-value (fun ws => w ws) n = 1) (i : ℕ) (i-lt : nat/strict-below i n) (hwi : w i = 1) (j : ℕ) (j-lt : nat/strict-below j n) (hne : proposition/negation (j = i)) → w j = 0
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational
signed/vickrey-winner-bid
signed/vickrey-winner-bid : (b w : ℕ → ℚ) (n : ℕ) (hw01 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), w idx · (1 + signed/negate (w idx)) = 0) (hsum : signed/expr-sum-value (fun ws => w ws) n = 1) (i : ℕ) (i-lt : nat/strict-below i n) (hwi : w i = 1) → signed/expr-sum-value (fun wb => w wb · b wb) n = b i
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational
signed/vickrey-price-bound
signed/vickrey-price-bound : (b w : ℕ → ℚ) (p : ℚ) (n : ℕ) (hw01 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), w idx · (1 + signed/negate (w idx)) = 0) (hatt : 1 ≤ signed/expr-sum-value (fun ai => (1 + signed/negate (w ai)) · (data/Bool.rec (fun x₉ => ℚ) 0 1 (signed/decide-at-most (b ai) p) · data/Bool.rec (fun x₁₂ => ℚ) 0 1 (signed/decide-at-most p (b ai)))) n) (R : ℚ) (hR : ∀ (rj : ℕ), ∀ (rj-lt : nat/strict-below rj n), ∀ (rz : w rj = 0), b rj ≤ R) → p ≤ R
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational≤ = signed/at-most
signed/vickrey-others-below-price
signed/vickrey-others-below-price : (b w : ℕ → ℚ) (p : ℚ) (n : ℕ) (hw01 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), w idx · (1 + signed/negate (w idx)) = 0) (hsum : signed/expr-sum-value (fun ws => w ws) n = 1) (hlose : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), (1 + signed/negate (w idx)) · b idx ≤ p) (i : ℕ) (i-lt : nat/strict-below i n) (hwi : w i = 1) (j : ℕ) (j-lt : nat/strict-below j n) (hne : proposition/negation (j = i)) → b j ≤ p
+ = signed/add0 = signed/zero1 = signed/one= = equality/Eq· = signed/multiplyℕ = data/Natℚ = signed/SignedRational≤ = signed/at-most
signed/vickrey-truthful-dominant
signed/vickrey-truthful-dominant : (b1 w1 : ℕ → ℚ) (p1 : ℚ) (b2 w2 : ℕ → ℚ) (p2 : ℚ) (n : ℕ) (h1w01 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), w1 idx · (1 + signed/negate (w1 idx)) = 0) (h1sum : signed/expr-sum-value (fun ws => w1 ws) n = 1) (h1win : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), b1 idx ≤ signed/expr-sum-value (fun wb => w1 wb · b1 wb) n) (h1lose : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), (1 + signed/negate (w1 idx)) · b1 idx ≤ p1) (h1att : 1 ≤ signed/expr-sum-value (fun ai => (1 + signed/negate (w1 ai)) · (data/Bool.rec (fun x₉ => ℚ) 0 1 (signed/decide-at-most (b1 ai) p1) · data/Bool.rec (fun x₁₂ => ℚ) 0 1 (signed/decide-at-most p1 (b1 ai)))) n) (h2w01 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), w2 idx · (1 + signed/negate (w2 idx)) = 0) (h2sum : signed/expr-sum-value (fun ws => w2 ws) n = 1) (h2win : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), b2 idx ≤ signed/expr-sum-value (fun wb => w2 wb · b2 wb) n) (h2lose : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), (1 + signed/negate (w2 idx)) · b2 idx ≤ p2) (h2att : 1 ≤ signed/expr-sum-value (fun ai => (1 + signed/negate (w2 ai)) · (data/Bool.rec (fun x₂₁ => ℚ) 0 1 (signed/decide-at-most (b2 ai) p2) · data/Bool.rec (fun x₂₄ => ℚ) 0 1 (signed/decide-at-most p2 (b2 ai)))) n) (i : ℕ) (i-lt : nat/strict-below i n) (hsame : ∀ (sj : ℕ), ∀ (sj-lt : nat/strict-below sj n), ∀ (sne : proposition/negation (sj = i)), b1 sj = b2 sj) → w2 i · (b1 i + signed/negate p2) ≤ w1 i · (b1 i + signed/negate p1)
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational≤ = signed/at-most