{
  "artifactId": "artifact.library.mathlib.schroeder-bernstein.v001",
  "candidateOnly": false,
  "category": "Set theory",
  "claimBoundary": "The selected declaration concludes that a bijective function α → β exists from hypotheses that particular functions f and g are injective. It does not assert that either given injection is itself bijective, and the page does not claim a new construction.",
  "collectionSlug": "landmark-theorems-in-mathlib",
  "exactFormalStatement": "theorem Function.Embedding.schroeder_bernstein {α : Type u} {β : Type v} {f : α → β} {g : β → α} (hf : Function.Injective f) (hg : Function.Injective g) : ∃ h : α → β, Function.Bijective h",
  "family": "Cardinality and bijections",
  "id": "library.mathlib.schroeder-bernstein.v001",
  "links": {
    "collection": "/collections/landmark-theorems-in-mathlib/",
    "collectionData": "/data/collections/mathlib-landmarks.json",
    "entry": "/library-theorems/schroeder-bernstein/",
    "entryData": "/data/library-theorems/schroeder-bernstein.json",
    "evidence": "/proofs/artifact.library.mathlib.schroeder-bernstein.v001.html",
    "evidenceData": "/data/proofs/artifact.library.mathlib.schroeder-bernstein.v001.evidence.json",
    "source": "/sources/upstream/schroeder-bernstein/"
  },
  "landmark": {
    "completeFormalType": "Function.Embedding.schroeder_bernstein {α : Type u} {β : Type v} {f : α → β} {g : β → α} (hf : Function.Injective f) (hg : Function.Injective g) : ∃ h : α → β, Function.Bijective h",
    "concepts": [
      "injections",
      "bijections",
      "cardinality",
      "infinite sets"
    ],
    "plainLanguage": "If there is a one-to-one function from α into β and another one-to-one function from β into α, then there is a function from α to β that is both one-to-one and onto.",
    "poster": {
      "alt": "An ivory theorem poster shows injective maps from alpha to beta and beta to alpha, subordinate alternating-chain intuition, and a newly constructed bijective map pairing every displayed point exactly once.",
      "byteSize": 2222270,
      "caption": "Two particular injections in opposite directions imply the existence of a new bijection; neither input map is presented as bijective.",
      "description": "The top half displays separate forward and backward injections with unused target points. Alternating chains appear in a middle proof-intuition strip. The lower half reorganizes the two point fields into one exact pairing h, next to separate injective and surjective cues and an explicit scope footer.",
      "derivatives": [
        {
          "byteSize": 88754,
          "height": 960,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/theorem-poster-v1-640.webp",
          "sha256": "sha256:b2f1d1e209d063c21614625377fd947816b9ac5ea56aef58299f65feb17a3904",
          "width": 640
        },
        {
          "byteSize": 175854,
          "height": 1536,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/theorem-poster-v1-1024.webp",
          "sha256": "sha256:2d146b362cc7fb98ab04900d8dc8ac48f2a7822299556eee20ece6f41d892c87",
          "width": 1024
        }
      ],
      "generatedAt": "2026-07-18T16:09:32.449Z",
      "height": 1536,
      "mediaType": "image/png",
      "modelRequested": "gpt-image-2",
      "publicPath": "/assets/library-theorems/schroeder-bernstein/theorem-poster-v1.png",
      "sha256": "sha256:fda59680e23b08329183a0554951d7a0273a0212db6d417b3e98281dbe5d4daf",
      "title": "Schröder–Bernstein Theorem at a glance",
      "width": 1024,
      "kind": "theorem_poster",
      "transcript": "SET THEORY · CARDINALITY\nSCHRÖDER–BERNSTEIN THEOREM\nf : α → β · INJECTIVE\ng : β → α · INJECTIVE\n⇒ ∃ h : α → β\nh IS BIJECTIVE\nTWO ONE-TO-ONE MAPS\nOPPOSITE DIRECTIONS\nALTERNATING CHAINS · PROOF INTUITION\nONE NEW EXACT PAIRING\nINJECTIVE + SURJECTIVE\nEXACT SCOPE\nSome bijection h exists. Neither given injection is claimed bijective."
    },
    "visual": {
      "alt": "Opposing one-to-one arrows between emerald and cobalt nodes are reorganized into alternating chains and loops, then into a complete row-by-row pairing.",
      "byteSize": 3337790,
      "caption": "Two injections are decomposed into alternating components and resolved into a bijection.",
      "description": "Two source-and-target diagrams on the left show total injections in opposite directions. Alternating colored chains and a loop occupy the center. On the right, isolated emerald and cobalt nodes are paired exactly once by clean horizontal segments, with no within-column links.",
      "derivatives": [
        {
          "byteSize": 30706,
          "height": 427,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/theorem-schematic-v1-640.webp",
          "sha256": "sha256:8b5ff2cbe1cd4a96da193227dd00345b40767dce7c70238b40acc5558abdd3b0",
          "width": 640
        },
        {
          "byteSize": 148284,
          "height": 800,
          "mediaType": "image/webp",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/theorem-schematic-v1-1200.webp",
          "sha256": "sha256:a9eab93e0425e65fd45c6ed1fc7de6c581c0b9722e7f93fbb98afdfbb7fc5feb",
          "width": 1200
        }
      ],
      "generatedAt": "2026-07-17T20:10:47Z",
      "height": 1024,
      "mediaType": "image/png",
      "modelRequested": "gpt-image-2",
      "publicPath": "/assets/library-theorems/schroeder-bernstein/theorem-schematic-v1.png",
      "sha256": "sha256:2784c5368a876070b4889e3407e1588810b3d2b57f63f1c30f8a3387c6462232",
      "title": "Schröder–Bernstein injection-to-bijection schematic",
      "width": 1536
    },
    "walkthrough": {
      "introduction": "Mathlib's selected theorem specializes a stronger relation-preserving construction: choose a least fixed-point region, transport its complement through a partial inverse, define a piecewise map, prove it surjective and injective, and discard the trivial relation witness.",
      "pages": [
        {
          "alt": "Non-exhaustive green and blue point fields show four representative injective strands in each direction, with a separate empty-case medallion above.",
          "byteSize": 2975784,
          "caption": "The selected theorem delegates to a stronger relation-preserving construction, with the empty case closed first.",
          "description": "schroeder_bernstein calls schroeder_bernstein_of_rel with the constantly true relation. Inside that helper, if β is empty then injectivity of f forces α empty and the empty equivalence supplies the result; the nonempty branch carries the fixed-point construction.",
          "derivatives": [
            {
              "byteSize": 32416,
              "height": 427,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-01-v2-640.webp",
              "sha256": "sha256:f54c836729ba299f8705f311c874cafa9d449fd18bb004b5d0a20d32da822132",
              "width": 640
            },
            {
              "byteSize": 149100,
              "height": 800,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-01-v2-1200.webp",
              "sha256": "sha256:45ace0a117f05c2c4d5578201ac4676fdbed42154d61a1e471e7606f956f2751",
              "width": 1200
            }
          ],
          "generatedAt": "2026-07-20T21:36:12Z",
          "height": 1024,
          "mediaType": "image/png",
          "modelRequested": "gpt-image-2",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-01-v2.png",
          "sha256": "sha256:79fc14e1afbb316cd76a2454d146ef0e7d9b0ac78727edc53ae870414c6fae09",
          "title": "Reduce to the stronger construction",
          "width": 1536,
          "equation": "schroeder_bernstein_of_rel hf hg (fun _ _ ↦ True) ...",
          "kind": "proof_walkthrough_page",
          "sequenceIndex": 1
        },
        {
          "alt": "A shifted non-exhaustive source window surrounds a nested gold fixed-point island while a few injective sample strands connect the secondary target field.",
          "byteSize": 3362796,
          "caption": "A monotone complement-image operator selects the least source region on which the forward injection will be used.",
          "description": "The operator sends a source subset to the complement of g applied to the complement of its f-image. Mathlib takes F.lfp and uses F.map_lfp to identify the chosen region with its image under this operator; complement injectivity yields the corresponding identity for the outside region.",
          "derivatives": [
            {
              "byteSize": 46444,
              "height": 427,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-02-v2-640.webp",
              "sha256": "sha256:019be8b9cf999f708f7279d258a98ebe94d93a4e6da83fbaa53aa4fdec8ea404",
              "width": 640
            },
            {
              "byteSize": 202098,
              "height": 800,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-02-v2-1200.webp",
              "sha256": "sha256:56596e2c24d7a4b2acf685bfb3625f2165e8777722d4afdf7c114924b44e8bd3",
              "width": 1200
            }
          ],
          "generatedAt": "2026-07-20T21:40:23Z",
          "height": 1024,
          "mediaType": "image/png",
          "modelRequested": "gpt-image-2",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-02-v2.png",
          "sha256": "sha256:998694ad25c725411ecf75d8c24f3631410479a4897ea43d2f35dca0b4f58752",
          "title": "Choose the least fixed-point region",
          "width": 1536,
          "equation": "F s = (g '' (f '' s)ᶜ)ᶜ; s = F.lfp",
          "kind": "proof_walkthrough_page",
          "sequenceIndex": 2
        },
        {
          "alt": "Braided cobalt-and-gold strands carry the hatched source complement into the target complement beside a separate gold forward-image island.",
          "byteSize": 3088849,
          "caption": "The partial inverse of the backward injection sends the outside region onto precisely the target points missed by the forward branch.",
          "description": "leftInverse_invFun turns g' into a left inverse of g. Combining that fact with the fixed-point complement identity proves g' '' sᶜ = (f '' s)ᶜ, which is the exact coverage relation needed by the piecewise map.",
          "derivatives": [
            {
              "byteSize": 40396,
              "height": 427,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-03-v3-640.webp",
              "sha256": "sha256:4ea29170af5d7925be772b214facc742ba662ef324faeefe20cc432e32dfc2ce",
              "width": 640
            },
            {
              "byteSize": 171144,
              "height": 800,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-03-v3-1200.webp",
              "sha256": "sha256:3ecee19a41484b8825b3689ddf7414371ab49538a7727105e510bfe8148da7ad",
              "width": 1200
            }
          ],
          "generatedAt": "2026-07-20T20:28:14Z",
          "height": 1024,
          "mediaType": "image/png",
          "modelRequested": "gpt-image-2",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-03-v3.png",
          "sha256": "sha256:ffe8d2a0a730d581c2afe7c3ad6e7940343e47bff663ab13921537dc71794ce2",
          "title": "Transport the complement through a partial inverse",
          "width": 1536,
          "equation": "g' '' sᶜ = (f '' s)ᶜ",
          "kind": "proof_walkthrough_page",
          "sequenceIndex": 3
        },
        {
          "alt": "Gold strands from the selected source island and braided dashed strands from its hatched complement fill complementary regions of the blue target field.",
          "byteSize": 2869706,
          "caption": "The new map uses f on the least fixed-point region and the partial inverse of g outside it; the two images cover complementary target regions.",
          "description": "Mathlib defines h by Set.piecewise. range_piecewise splits its range into the f-image of s and the g'-image of sᶜ; substituting the complement identity and union_compl_self proves Surjective h.",
          "derivatives": [
            {
              "byteSize": 39258,
              "height": 427,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-04-v3-640.webp",
              "sha256": "sha256:3c1678d1954777e2dd0be3497d63de4c3445beb16962738f02e037fd06fbb797",
              "width": 640
            },
            {
              "byteSize": 148868,
              "height": 800,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-04-v3-1200.webp",
              "sha256": "sha256:f27e5295a4fd8b70ae7cfada43234654891c4b67de898b577ac691ea04315f16",
              "width": 1200
            }
          ],
          "generatedAt": "2026-07-20T20:57:09Z",
          "height": 1024,
          "mediaType": "image/png",
          "modelRequested": "gpt-image-2",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-04-v3.png",
          "sha256": "sha256:14dee89bba647be565b4efe15d05c3d159aeba6b282078ef19d01416814dd26c",
          "title": "Define the piecewise map and cover the target",
          "width": 1536,
          "equation": "h = s.piecewise f g'; Function.Surjective h",
          "kind": "proof_walkthrough_page",
          "sequenceIndex": 4
        },
        {
          "alt": "Eight green points pair exactly with eight blue points through alternating solid-gold and cobalt-gold braided strands, each endpoint used once.",
          "byteSize": 2509214,
          "caption": "Branchwise injectivity and complement separation make the new surjective map one-to-one, yielding the required bijection.",
          "description": "injective_piecewise_iff uses hf on the selected region, the left-inverse law for g' on the complement, and the fact that an outside target cannot lie in f '' s. The helper returns h with both properties, and schroeder_bernstein specializes its relation to True and keeps the bijectivity witness.",
          "derivatives": [
            {
              "byteSize": 29506,
              "height": 427,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-05-v2-640.webp",
              "sha256": "sha256:3470dd155d1626c36e5865757755edabe47811887f2907fb07078699d508c721",
              "width": 640
            },
            {
              "byteSize": 102074,
              "height": 800,
              "mediaType": "image/webp",
              "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-05-v2-1200.webp",
              "sha256": "sha256:d1e57bed8fd40108df48ceaf2463f87596d747105269e1d06fa27b4b44612e1a",
              "width": 1200
            }
          ],
          "generatedAt": "2026-07-20T20:33:17Z",
          "height": 1024,
          "mediaType": "image/png",
          "modelRequested": "gpt-image-2",
          "publicPath": "/assets/library-theorems/schroeder-bernstein/proof-walkthrough-05-v2.png",
          "sha256": "sha256:72ac4cce26a7eb67b2ca8e8d875a3f1d200b38bf4d842d955f6719f54fe861f0",
          "title": "Prove one-to-one and conclude",
          "width": 1536,
          "equation": "∃ h : α → β, Function.Bijective h",
          "kind": "proof_walkthrough_page",
          "sequenceIndex": 5
        }
      ],
      "title": "How two injections produce a new bijection"
    },
    "whyLandmark": "Schröder–Bernstein turns two cardinal inequalities into an equality of cardinality. It is fundamental to comparing infinite sets without first constructing a bijection directly."
  },
  "nonClaims": [
    "Proof Atlas did not originate the Schröder–Bernstein theorem or Mathlib's declaration.",
    "The direct upstream theorem, not a local wrapper, is the canonical mathematical object.",
    "A historical or future review cannot be inferred from the build evidence alone."
  ],
  "publicExportEligible": true,
  "relationship": "upstream_direct",
  "schemaVersion": "library-theorem-entry-data.v1",
  "statementId": "statement.library.mathlib.schroeder-bernstein.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": "Injections in both directions between two types imply a bijection between them.",
  "targetId": "target.library.mathlib.schroeder-bernstein.v001",
  "title": "Schröder–Bernstein Theorem",
  "upstreamOrigin": {
    "declarationName": "Function.Embedding.schroeder_bernstein",
    "immutableSourceUrl": "https://github.com/leanprover-community/mathlib4/blob/5e932f97dd25535344f80f9dd8da3aab83df0fe6/Mathlib/SetTheory/Cardinal/SchroederBernstein.lean#L90",
    "packageName": "mathlib",
    "repositoryUrl": "https://github.com/leanprover-community/mathlib4",
    "sourceArtifactHash": "sha256:21e58be601f97aa3d71dd63c3cec297c730b4ee54d94cadcf100da7f1a4932be",
    "sourceByteLength": 6349,
    "sourceCommit": "5e932f97dd25535344f80f9dd8da3aab83df0fe6",
    "sourceFile": "Mathlib/SetTheory/Cardinal/SchroederBernstein.lean",
    "sourceLine": 90,
    "verificationKind": "git_worktree"
  },
  "publicPresentationReview": {
    "status": "reviewed"
  }
}
