{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/toward-detecting-violations-of-differential","title":"Toward Detecting Violations of Differential Privacy","arxiv_id":"1805.10277","date":"2018-05-25","proceeding":null,"authors":["Zeyu Ding","Yuxin Wang","Guanhong Wang","Danfeng Zhang","Daniel Kifer"],"abstract":"The widespread acceptance of differential privacy has led to the publication of many sophisticated algorithms for protecting privacy. However, due to the subtle nature of this privacy definition, many such algorithms have bugs that make them violate their claimed privacy. In this paper, we consider the problem of producing counterexamples for such incorrect algorithms. The counterexamples are designed to be short and human-understandable so that the counterexample generator can be used in the development process -- a developer could quickly explore variations of an algorithm and investigate where they break down. Our approach is statistical in nature. It runs a candidate algorithm many times and uses statistical tests to try to detect violations of differential privacy. An evaluation on a variety of incorrect published algorithms validates the usefulness of our approach: it correctly rejects incorrect algorithms and provides counterexamples for them within a few seconds.","url_abs":"http://arxiv.org/abs/1805.10277v1","url_pdf":"http://arxiv.org/pdf/1805.10277v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"toward-detecting-violations-of-differential","repo_url":"https://github.com/cmla-psu/statdp","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"toward-detecting-violations-of-differential","repo_url":"https://github.com/openmined/pystatdp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1805.10277","atlas_url":"https://app.syntology.ai/?focus=1805.10277","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1805.10277"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cmla-psu/statdp","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/openmined/pystatdp","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":7,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"8b68ceec7e080bcf","entry":"run_algorithm","repo":"cmla-psu/statdp","repo_kind":"official","path":"statdp/core.py","file_url":"https://github.com/cmla-psu/statdp/blob/HEAD/statdp/core.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"none","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8b68ceec7e080bcf"}},{"code_sha256_prefix":"cc099cd4e106f270","entry":"arr_n_check","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/utils.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cc099cd4e106f270"}},{"code_sha256_prefix":"5a4626bc75b2e6c3","entry":"generate_arguments","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/generators.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/generators.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5a4626bc75b2e6c3"}},{"code_sha256_prefix":"19623c461c08e0b7","entry":"generate_databases","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/generators.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/generators.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"19623c461c08e0b7"}},{"code_sha256_prefix":"6015a0e024cc3d86","entry":"generic_method_pydp","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/algorithms.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/algorithms.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6015a0e024cc3d86"}},{"code_sha256_prefix":"8fafb9ab19261397","entry":"pmf","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/_hypergeom.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/_hypergeom.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8fafb9ab19261397"}},{"code_sha256_prefix":"f73aaa03b883332f","entry":"run_algorithm","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/core.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f73aaa03b883332f"}},{"code_sha256_prefix":"d8fcd6a9564289ef","entry":"sf","repo":"openmined/pystatdp","repo_kind":"listed","path":"pystatdp/_hypergeom.py","file_url":"https://github.com/openmined/pystatdp/blob/HEAD/pystatdp/_hypergeom.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d8fcd6a9564289ef"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}