Differential Privacy #
This file defines an abstract system of differentially private operators.
Typeclass synonym for the classes we use for probaility
- instMeasurableSpace : MeasurableSpace T
- instCountable : Countable T
- instDiscreteMeasurableSpace : DiscreteMeasurableSpace T
- instInhabited : Inhabited T
Instances
Equations
- SLang.instDiscProbSpaceOfCountableOfDiscreteMeasurableSpaceOfInhabited = { instMeasurableSpace := im, instCountable := ic, instDiscreteMeasurableSpace := idm, instInhabited := ii }
Abstract definition of a differentially private systemm.
Differential privacy proposition, with one real parameter (ε-DP, ε-zCDP, etc)
Definition of DP is well-formed: Privacy parameter required to obtain (ε', δ)-approximate DP
- prop_adp {Z : Type} [DiscProbSpace Z] {m : Mechanism T Z} (δ : NNReal) : 0 < δ → ∀ (ε' : NNReal), prop m (of_app_dp T δ ε') → ApproximateDP m (↑ε') δ
For any ε', this definition of DP implies (ε', δ)-approximate-DP for all δ
DP is monotonic
- adaptive_compose_prop {U V : Type} [DiscProbSpace U] [DiscProbSpace V] {m₁ : Mechanism T U} {m₂ : U → Mechanism T V} {ε₁ ε₂ ε : NNReal} : prop m₁ ε₁ → (∀ (u : U), prop (m₂ u) ε₂) → ε₁ + ε₂ = ε → prop (privComposeAdaptive m₁ m₂) ε
Privacy adaptively composes by addition.
- postprocess_prop {V U : Type} [DiscProbSpace U] {pp : U → V} {m : Mechanism T U} {ε : NNReal} : prop m ε → prop (privPostProcess m pp) ε
Privacy is invariant under post-processing.
Constant query is 0-DP
Instances
A noise function for a differential privacy system
A noise mechanism (eg. Laplace, Discrete Gaussian, etc) Paramaterized by a query, sensitivity, and a (rational) security paramater.
Relationship between arguments to noise and resulting privacy amount
- noise_prop {q : List T → ℤ} {Δ εn εd : ℕ+} {ε : NNReal} : noise_priv dps εn εd ε → sensitivity q ↑Δ → DPSystem.prop (noise dps q Δ εn εd) ε
Adding noise to a query makes it private
Instances
- prop_adp {Z : Type} [DiscProbSpace Z] {m : Mechanism T Z} (δ : NNReal) : 0 < δ → ∀ (ε' : NNReal), prop m (of_app_dp T δ ε') → ApproximateDP m (↑ε') δ
- adaptive_compose_prop {U V : Type} [DiscProbSpace U] [DiscProbSpace V] {m₁ : Mechanism T U} {m₂ : U → Mechanism T V} {ε₁ ε₂ ε : NNReal} : prop m₁ ε₁ → (∀ (u : U), prop (m₂ u) ε₂) → ε₁ + ε₂ = ε → prop (privComposeAdaptive m₁ m₂) ε
- postprocess_prop {V U : Type} [DiscProbSpace U] {pp : U → V} {m : Mechanism T U} {ε : NNReal} : prop m ε → prop (privPostProcess m pp) ε
- prop_par {U V : Type} {m1 : Mechanism T U} {m2 : Mechanism T V} {ε₁ ε₂ ε : NNReal} : ε = max ε₁ ε₂ → ∀ (f : T → Bool), DPSystem.prop m1 ε₁ → DPSystem.prop m2 ε₂ → DPSystem.prop (privParCompose m1 m2 f) ε