Differential Privacy #
This file defines an abstract system of differentially private operators.
General (value-dependent) composition of mechanisms
Equations
- SLang.privComposeAdaptive nq1 nq2 l = do let A ← nq1 l let B ← nq2 A l pure (A, B)
Instances For
Chain rule relating the adaptive composition definitions
The joint distribution decomposes into the conditional and marginal (ie, nq1 l) distributions
Product of mechanisms.
Equations
- SLang.privCompose nq1 nq2 l = do let A ← nq1 l let B ← nq2 l pure (A, B)
Instances For
Mechanism obtained by applying a post-processing function to a mechanism.
Equations
- SLang.privPostProcess nq pp l = do let A ← nq l pure (pp A)
Instances For
Abstract definition of a differentially private systemm.
- prop : {Z : Type} → SLang.Mechanism T Z → NNReal → Prop
Differential privacy proposition, with one real paramater (ε-DP, ε-zCDP, etc)
- prop_mono : ∀ {Z : Type} {m : SLang.Mechanism T Z} {ε₁ ε₂ : NNReal}, ε₁ ≤ ε₂ → SLang.DPSystem.prop m ε₁ → SLang.DPSystem.prop m ε₂
DP is monotonic
- noise : SLang.Query T ℤ → ℕ+ → ℕ+ → ℕ+ → SLang.Mechanism T ℤ
A noise mechanism (eg. Laplace, Discrete Gaussian, etc) Paramaterized by a query, sensitivity, and a (rational) security paramater.
- noise_prop : ∀ (q : List T → ℤ) (Δ εn εd : ℕ+), sensitivity q ↑Δ → SLang.DPSystem.prop (SLang.DPSystem.noise q Δ εn εd) (↑↑εn / ↑↑εd)
Adding noise to a query makes it private.
- compose_prop : ∀ {U V : Type} [inst : MeasurableSpace U] [inst_1 : Countable U] [inst : DiscreteMeasurableSpace U] [inst : Inhabited U] [inst : MeasurableSpace V] [inst_2 : Countable V] [inst : DiscreteMeasurableSpace V] [inst : Inhabited V] (m₁ : SLang.Mechanism T U) (m₂ : SLang.Mechanism T V) (ε₁ ε₂ : NNReal), SLang.DPSystem.prop m₁ ε₁ → SLang.DPSystem.prop m₂ ε₂ → SLang.DPSystem.prop (SLang.privCompose m₁ m₂) (ε₁ + ε₂)
Privacy composes by addition.
- adaptive_compose_prop : ∀ {U V : Type} [inst : MeasurableSpace U] [inst_1 : Countable U] [inst : DiscreteMeasurableSpace U] [inst : Inhabited U] [inst : MeasurableSpace V] [inst_2 : Countable V] [inst : DiscreteMeasurableSpace V] [inst : Inhabited V] (m₁ : SLang.Mechanism T U) (m₂ : U → SLang.Mechanism T V) (ε₁ ε₂ : NNReal), SLang.DPSystem.prop m₁ ε₁ → (∀ (u : U), SLang.DPSystem.prop (m₂ u) ε₂) → SLang.DPSystem.prop (SLang.privComposeAdaptive m₁ m₂) (ε₁ + ε₂)
Privacy adaptively composes by addition.
- postprocess_prop : ∀ {V U : Type} [inst : MeasurableSpace U] [inst_1 : Countable U] [inst : DiscreteMeasurableSpace U] [inst : Inhabited U] {pp : U → V} (m : SLang.Mechanism T U) (ε : NNReal), SLang.DPSystem.prop m ε → SLang.DPSystem.prop (SLang.privPostProcess m pp) ε
Privacy is invariant under post-processing.
- const_prop : ∀ {U : Type} [inst : MeasurableSpace U] [inst_1 : Countable U] [inst : DiscreteMeasurableSpace U] (u : U), SLang.DPSystem.prop (SLang.privConst u) 0
Constant query is 0-DP
Instances
DP is monotonic
Adding noise to a query makes it private.
Privacy composes by addition.
Privacy adaptively composes by addition.
Privacy is invariant under post-processing.
Constant query is 0-DP