{
  "artifactId": "artifact.library.mathlib.dirichlet-primes-arithmetic-progressions.v001",
  "candidateOnly": false,
  "category": "Number theory",
  "claimBoundary": "This target indexes Mathlib's infinitude theorem for primes in one invertible residue class modulo a nonzero natural modulus. It asserts infinitely many such primes; it does not give their density, an asymptotic counting formula, a least-prime bound, or a new proof.",
  "collectionSlug": "landmark-theorems-in-mathlib",
  "exactFormalStatement": "theorem Nat.infinite_setOf_prime_and_eq_mod {q : ℕ} [NeZero q] {a : ZMod q} (ha : IsUnit a) : {p : ℕ | p.Prime ∧ (p : ZMod q) = a}.Infinite",
  "family": "Analytic number theory",
  "id": "library.mathlib.dirichlet-primes-arithmetic-progressions.v001",
  "links": {
    "collection": "/collections/landmark-theorems-in-mathlib/",
    "collectionData": "/data/collections/mathlib-landmarks.json",
    "entry": "/library-theorems/dirichlet-primes-arithmetic-progressions/",
    "entryData": "/data/library-theorems/dirichlet-primes-arithmetic-progressions.json",
    "evidence": "/proofs/artifact.library.mathlib.dirichlet-primes-arithmetic-progressions.v001.html",
    "evidenceData": "/data/proofs/artifact.library.mathlib.dirichlet-primes-arithmetic-progressions.v001.evidence.json",
    "source": "/sources/upstream/dirichlet-primes-arithmetic-progressions/"
  },
  "landmark": {
    "completeFormalType": "theorem Nat.infinite_setOf_prime_and_eq_mod {q : ℕ} [NeZero q] {a : ZMod q} (ha : IsUnit a) : {p : ℕ | p.Prime ∧ (p : ZMod q) = a}.Infinite",
    "concepts": [
      "Dirichlet's theorem",
      "primes in arithmetic progressions",
      "invertible residue classes",
      "Dirichlet characters",
      "L-series",
      "von Mangoldt function"
    ],
    "plainLanguage": "Fix a positive modulus q and an invertible residue a modulo q. Infinitely many natural-number primes leave residue a when divided by q.",
    "poster": {
      "alt": "An ivory analytic-number-theory poster connects a highlighted unit residue class to character waves, an L-series pole at one, a divergent prime contribution, and an unending prime progression.",
      "byteSize": 2327959,
      "caption": "A character decomposition and nonvanishing argument force the prime contribution in every invertible residue class to diverge, hence the class contains infinitely many primes.",
      "description": "The exact infinitude statement leads into the source's analytic route: isolate the residue class with the von Mangoldt function, decompose it using Dirichlet characters, identify the L-series, cancel the pole at one, use nonvanishing for continuity, remove the summable nonprime contribution, and conclude that primes in the class cannot be finite.",
      "derivatives": [
        {
          "byteSize": 116084,
          "height": 960,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/dirichlet-primes-arithmetic-progressions/theorem-poster-v1-640.webp",
          "sha256": "sha256:d3cd5b047382866efa8bbd4a5f1f4e504079051cc20dc8a3dbc857971e474c70",
          "width": 640
        },
        {
          "byteSize": 231522,
          "height": 1536,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/dirichlet-primes-arithmetic-progressions/theorem-poster-v1-1024.webp",
          "sha256": "sha256:7fa29aefa97d4e077edefd1e7aa7135a43783e4f58ac991af139889241afd923",
          "width": 1024
        }
      ],
      "generatedAt": "2026-07-25T06:20:33.269Z",
      "height": 1536,
      "mediaType": "image/png",
      "modelRequested": "gpt-image-2",
      "publicPath": "/assets/library-theorems/dirichlet-primes-arithmetic-progressions/theorem-poster-v1.png",
      "sha256": "sha256:71fcbdc8845843f959736bfe452fa0f0cd60e3f515d7df8da9724455e97dbbc9",
      "title": "Dirichlet's Theorem — infinitely many primes in every unit residue class",
      "width": 1024,
      "kind": "theorem_poster",
      "transcript": "ANALYTIC NUMBER THEORY · PRIMES IN PROGRESSIONS\nDIRICHLET'S THEOREM\nq ≥ 1 and a is a unit modulo q\n{p ∈ ℕ | p is prime and p ≡ a (mod q)} is infinite\nEVERY INVERTIBLE RESIDUE CLASS CONTAINS INFINITELY MANY PRIMES\nHOW THE CHECKED ROUTE MOVES\n1 · Isolate one residue class with the von Mangoldt function\n2 · Decompose the class using Dirichlet characters\n3 · Identify its L-series with logarithmic derivatives\n4 · Cancel the pole at s = 1\n5 · Use nonvanishing to control the remaining analytic term\n6 · Remove the summable nonprime contribution\n7 · A divergent prime contribution forces infinitely many primes\nEXACT SCOPE\nInfinitude only. No density, asymptotic count, least-prime bound, or claim for a nonunit residue class."
    },
    "visual": {
      "alt": "An irregular procession of faceted prime tokens repeatedly enters one highlighted lane of a modular residue wheel and continues beyond the frame.",
      "byteSize": 3859391,
      "caption": "For every unit residue modulo a positive modulus, the primes returning to that class never run out.",
      "description": "A modular wheel isolates one invertible residue class while an unbounded, irregular prime procession returns to it. Character waves and an analytic pole-cancellation motif recall the checked L-series route without suggesting equal spacing or a density theorem.",
      "derivatives": [
        {
          "byteSize": 98546,
          "height": 427,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/dirichlet-primes-arithmetic-progressions/theorem-schematic-v1-640.webp",
          "sha256": "sha256:8c235594e5a6c4256d8e1e961e9eb91be7cc7c43e37838a2a56eee46cb9607f7",
          "width": 640
        },
        {
          "byteSize": 367660,
          "height": 800,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/dirichlet-primes-arithmetic-progressions/theorem-schematic-v1-1200.webp",
          "sha256": "sha256:e002c8935a0b19e4ee90151168443d6535aabfd12cbdb01d3906d09366e3efd5",
          "width": 1200
        }
      ],
      "generatedAt": "2026-07-25T05:49:45.673Z",
      "height": 1024,
      "mediaType": "image/png",
      "modelRequested": "gpt-image-2",
      "publicPath": "/assets/library-theorems/dirichlet-primes-arithmetic-progressions/theorem-schematic-v1.png",
      "sha256": "sha256:89ab07e06c6118c31c4a9f1ec075e3263cebeed82544ee7d358feab549c47865",
      "title": "One invertible residue class receives infinitely many primes",
      "width": 1536
    },
    "walkthrough": null,
    "whyLandmark": "Dirichlet's theorem is a foundational bridge between prime-number distribution, harmonic analysis on residue classes, and complex analytic L-functions. The Mathlib file retains a substantial source-visible route from character orthogonality and nonvanishing to the exact infinitude conclusion."
  },
  "nonClaims": [
    "The selected declaration proves infinitude, not equidistribution or a prime-counting asymptotic.",
    "The residue class must be a unit modulo the nonzero modulus.",
    "The theorem gives no explicit bound for the least or next prime in the class.",
    "ProofAtlas is indexing an existing Mathlib theorem, not claiming new mathematics."
  ],
  "publicExportEligible": true,
  "relationship": "upstream_direct",
  "schemaVersion": "library-theorem-entry-data.v1",
  "statementId": "statement.library.mathlib.dirichlet-primes-arithmetic-progressions.v001",
  "statusAxes": {
    "acceptedAtlasResult": "Not recorded for the preferred artifact",
    "locallyReproduced": "Exact upstream declaration replayed",
    "reviewedPage": "Current public presentation reviewed",
    "upstreamIndexed": "Pinned source bytes verified locally"
  },
  "summary": "Every invertible residue class modulo a positive natural number contains infinitely many primes.",
  "targetId": "target.library.mathlib.dirichlet-primes-arithmetic-progressions.v001",
  "title": "Dirichlet's Theorem on Primes in Arithmetic Progressions",
  "upstreamOrigin": {
    "declarationName": "Nat.infinite_setOf_prime_and_eq_mod",
    "immutableSourceUrl": "https://github.com/leanprover-community/mathlib4/blob/5e932f97dd25535344f80f9dd8da3aab83df0fe6/Mathlib/NumberTheory/LSeries/PrimesInAP.lean#L475",
    "packageName": "mathlib",
    "repositoryUrl": "https://github.com/leanprover-community/mathlib4",
    "sourceArtifactHash": "sha256:d99edfb234cc2c044332951a16f32bbfad58c8c73cc51faf4e9219d3bc6684c2",
    "sourceByteLength": 27612,
    "sourceCommit": "5e932f97dd25535344f80f9dd8da3aab83df0fe6",
    "sourceFile": "Mathlib/NumberTheory/LSeries/PrimesInAP.lean",
    "sourceLine": 475,
    "verificationKind": "git_worktree"
  },
  "publicPresentationReview": {
    "status": "reviewed"
  }
}
