Documentation

CsdLean4.Mathlib.QuantumInfo.AharonovBohmRing

The Aharonov–Bohm effect on a ring of N sites #

Category: 1-Mathlib (CSD-free; staged for upstream). BACKLOG #55, brick BP-4 of specs/berry-phase-scoping.md.

A tight-binding ring of N sites threaded by a magnetic flux Φ: the amplitude to hop from j to j + 1 carries the Peierls phase e^{i a j}, and the flux is the phase accumulated around the loop, Φ = ∑ⱼ a j. The whole Aharonov–Bohm effect is two theorems about this matrix:

The spectrum depends on Φ only modulo 2π (★ ringEigval_add_two_pi, ★★ range_ringEigval_add_two_pi): flux is measured in units of the quantum 2π. That is the whole of the ambiguity, and the converse holds: ★★★ exists_eq_of_range_ringEigval_eq — two fluxes with the same level set differ by a whole quantum or are reflections of one another, at every ring size. The top of the spectrum is 2 cos(fluxDist Φ / N) (★★★ isGreatest_range_ringEigval), a strictly decreasing function of the distance from the flux to the nearest whole quantum, so the spectrum reads that distance off and nothing else.

Main declarations #

Honest scope #

⚠️ Finite-dimensional: a ring of N ≥ 3 sites, which is the lattice Aharonov–Bohm effect. The continuum version on L²(S¹) — the operator −(∂ − iΦ)² with spectrum (n − Φ)² — is not here and is not claimed (specs/berry-phase-scoping.md BP-4 says why: it is CV-scale).

⚠️ No solenoid, no vector potential as a 1-form, no double slit: the flux enters as the phase of the hopping amplitudes, which is Peierls' substitution taken as the definition of the model.

⚠️ The determination theorem compares level sets, Set.range (ringEigval N ·). It says nothing about multiplicities, and nothing about what a finite number of measurements with finite resolution could distinguish.

References: Y. Aharonov, D. Bohm, Phys. Rev. 115 (1959) 485; R. G. Chambers, Phys. Rev. Lett. 5 (1960) 3; A. Tonomura et al., Phys. Rev. Lett. 56 (1986) 792; R. Peierls, Z. Phys. 80 (1933) 763; specs/berry-phase-scoping.md BP-4; specs/BACKLOG.md #55; specs/future-work.md.

The ring and its flux #

noncomputable def QuantumInfo.AharonovBohm.ringHamOf (N : ℕ) (a : ZMod N → ℝ) :

The tight-binding ring of N sites with Peierls phases: a j is the phase of the hop from site j to site j + 1, so the matrix element ⟨j + 1|H|j⟩ is e^{i a j} and the Hamiltonian is Hermitian.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    The flux threading the ring: the phase accumulated once around it.

    Equations
    Instances For
      noncomputable def QuantumInfo.AharonovBohm.ringHam (N : ℕ) (Φ : ℝ) :

      The uniform gauge: the flux Φ shared equally among the N bonds.

      Equations
      Instances For
        theorem QuantumInfo.AharonovBohm.flux_ringHam {N : ℕ} [NeZero N] (Φ : ℝ) :
        (flux N fun (x : ZMod N) => Φ / ↑N) = Φ
        theorem QuantumInfo.AharonovBohm.two_ne_zero {N : ℕ} (hN : 3 ≤ N) :
        2 ≠ 0

        A ring with at least three sites has 2 ≠ 0 in its site group.

        theorem QuantumInfo.AharonovBohm.sub_one_ne_add_one {N : ℕ} (hN : 3 ≤ N) (i : ZMod N) :
        i - 1 ≠ i + 1

        On a ring with at least three sites the two neighbours of a site are distinct.

        theorem QuantumInfo.AharonovBohm.self_ne_add_two {N : ℕ} (hN : 3 ≤ N) (i : ZMod N) :
        i ≠ i + 2

        On a ring with at least three sites a site is not its own second neighbour.

        theorem QuantumInfo.AharonovBohm.ringHamOf_apply_of_ne {N : ℕ} {a : ZMod N → ℝ} {i j : ZMod N} (h1 : i ≠ j + 1) (h2 : j ≠ i + 1) :
        ringHamOf N a i j = 0
        theorem QuantumInfo.AharonovBohm.ringHamOf_apply_succ {N : ℕ} (a : ZMod N → ℝ) (j : ZMod N) :
        ringHamOf N a (j + 1) j = Complex.exp (↑(a j) * Complex.I)
        theorem QuantumInfo.AharonovBohm.ringHamOf_apply_pred {N : ℕ} (hN : 3 ≤ N) (a : ZMod N → ℝ) (j : ZMod N) :
        ringHamOf N a j (j + 1) = (starRingEnd ℂ) (Complex.exp (↑(a j) * Complex.I))

        ★ The ring Hamiltonian is Hermitian.

        The twisted Fourier modes #

        noncomputable def QuantumInfo.AharonovBohm.ringMode (N : ℕ) [NeZero N] (k : ZMod N) :
        ZMod N → ℂ

        The twisted Fourier mode ψ_k(j) = e^{−2πi jk/N} (the discrete-Fourier convention).

        Equations
        Instances For
          @[simp]
          theorem QuantumInfo.AharonovBohm.ringMode_zero {N : ℕ} [NeZero N] (k : ZMod N) :
          ringMode N k 0 = 1

          The standard character at −k is the conjugate of the character at k: its values are on the unit circle.

          noncomputable def QuantumInfo.AharonovBohm.ringEigval (N : ℕ) (Φ : ℝ) (m : ℤ) :

          The eigenvalue attached to the integer label m: 2 cos((2πm + Φ)/N).

          Equations
          Instances For
            theorem QuantumInfo.AharonovBohm.bondPhase_mul_stdAddChar {N : ℕ} [NeZero N] (Φ : ℝ) (m : ℤ) :
            Complex.exp (↑(Φ / ↑N) * Complex.I) * ZMod.stdAddChar ↑m = Complex.exp (↑((2 * Real.pi * ↑m + Φ) / ↑N) * Complex.I)

            The uniform bond phase times the character at an integer label is a single exponential.

            theorem QuantumInfo.AharonovBohm.ringHam_mulVec_ringMode {N : ℕ} [NeZero N] (hN : 3 ≤ N) (Φ : ℝ) (m : ℤ) :
            (ringHam N Φ).mulVec (ringMode N ↑m) = ↑(ringEigval N Φ m) • ringMode N ↑m

            ★★ The twisted modes are the eigenvectors of the ring, with eigenvalue 2 cos((2πm + Φ)/N) for any integer label m of the mode. This is the Aharonov–Bohm spectrum: the flux shifts every level, and it does so continuously.

            The flux quantum: the spectrum sees Φ only modulo 2π #

            theorem QuantumInfo.AharonovBohm.ringEigval_add_card {N : ℕ} [NeZero N] (Φ : ℝ) (m : ℤ) :
            ringEigval N Φ (m + ↑N) = ringEigval N Φ m

            ★★ One flux quantum changes nothing. Adding 2π to the flux permutes the levels — the spectrum, as a set, is invariant.

            ★ The levels of the ring are eigenvalues of its Hamiltonian, as Module.End.HasEigenvalue.

            Gauge transformations: the vector potential is not observable #

            noncomputable def QuantumInfo.AharonovBohm.gaugeDiag (N : ℕ) (g : ZMod N → ℝ) :

            A gauge transformation of the ring: the diagonal unitary diag(e^{i g j}).

            Equations
            Instances For

              A gauge transformation is unitary.

              theorem QuantumInfo.AharonovBohm.gaugeDiag_conj_ringHamOf {N : ℕ} [NeZero N] (hN : 3 ≤ N) (a g : ZMod N → ℝ) :
              (gaugeDiag N g).conjTranspose * ringHamOf N a * gaugeDiag N g = ringHamOf N fun (j : ZMod N) => a j + g j - g (j + 1)

              ★★ Gauge covariance of the ring. Conjugating by the diagonal unitary diag(e^{i g}) moves the bond phases by the discrete gradient of g: the vector potential is not observable, only gauge-equivalent descriptions of the same ring.

              theorem QuantumInfo.AharonovBohm.flux_gauge {N : ℕ} [NeZero N] (a g : ZMod N → ℝ) :
              (flux N fun (j : ZMod N) => a j + g j - g (j + 1)) = flux N a

              ★ The flux is gauge-invariant: the discrete gradient of g sums to zero around the ring.

              All the flux on one bond #

              The gauge in which the whole flux sits on the single bond from −1 to 0.

              Equations
              Instances For
                noncomputable def QuantumInfo.AharonovBohm.oneBondGauge (N : ℕ) (Φ : ℝ) :
                ZMod N → ℝ

                The gauge function that pushes the uniform phases onto that one bond.

                Equations
                Instances For
                  theorem QuantumInfo.AharonovBohm.val_add_one_of_ne {N : ℕ} [NeZero N] (hN : 3 ≤ N) {j : ZMod N} (h : j ≠ -1) :
                  (j + 1).val = j.val + 1

                  Away from the distinguished site the successor's value is the successor of the value.

                  theorem QuantumInfo.AharonovBohm.uniform_add_oneBondGauge {N : ℕ} [NeZero N] (hN : 3 ≤ N) (Φ : ℝ) (j : ZMod N) :
                  Φ / ↑N + oneBondGauge N Φ j - oneBondGauge N Φ (j + 1) = oneBondPhase N Φ j

                  ★ The uniform phases, gauge-shifted by oneBondGauge, are exactly the one-bond phases.

                  ★★★ The whole flux can be put on a single bond. The uniform ring and the ring whose entire Peierls phase sits on the bond from −1 to 0 are the same Hamiltonian in two gauges: conjugate by one explicit diagonal unitary. The spectrum therefore cannot see how the phase is distributed — only its total, the flux.

                  The discrete Fourier transform diagonalises the ring #

                  theorem QuantumInfo.AharonovBohm.mulVec_three {N : ℕ} [NeZero N] (A B C : Matrix (ZMod N) (ZMod N) ℂ) (v : ZMod N → ℂ) :
                  (A * B * C).mulVec v = A.mulVec (B.mulVec (C.mulVec v))

                  Three matrices acting on a vector, one at a time.

                  theorem QuantumInfo.AharonovBohm.sum_stdAddChar_mul {N : ℕ} [NeZero N] (t : ZMod N) :
                  ∑ j : ZMod N, ZMod.stdAddChar (t * j) = if t = 0 then ↑N else 0

                  Character orthogonality on ZMod N: the sum of stdAddChar (t · j) over the ring is N for t = 0 and 0 otherwise.

                  theorem QuantumInfo.AharonovBohm.intCast_val {N : ℕ} [NeZero N] (k : ZMod N) :
                  ↑↑k.val = k

                  The integer label of a site is the site.

                  noncomputable def QuantumInfo.AharonovBohm.dftMatrix (N : ℕ) [NeZero N] :

                  The discrete Fourier matrix of the ring: its columns are the twisted modes, normalised.

                  Equations
                  Instances For
                    theorem QuantumInfo.AharonovBohm.dftMatrix_apply {N : ℕ} [NeZero N] (j k : ZMod N) :
                    dftMatrix N j k = ringMode N k j / ↑√↑N

                    ★ The Fourier matrix is unitary — character orthogonality.

                    theorem QuantumInfo.AharonovBohm.dftMatrix_conj_ringHam {N : ℕ} [NeZero N] (hN : 3 ≤ N) (Φ : ℝ) :
                    (dftMatrix N).conjTranspose * ringHam N Φ * dftMatrix N = Matrix.diagonal fun (k : ZMod N) => ↑(ringEigval N Φ ↑k.val)

                    ★★ The ring Hamiltonian is diagonalised by the discrete Fourier transform, with the Aharonov–Bohm levels 2 cos((2πk + Φ)/N) on the diagonal.

                    theorem QuantumInfo.AharonovBohm.eq_ringEigval_of_mulVec {N : ℕ} [NeZero N] (hN : 3 ≤ N) (Φ : ℝ) {μ : ℂ} {v : ZMod N → ℂ} (hv : v ≠ 0) (h : (ringHam N Φ).mulVec v = μ • v) :
                    ∃ (k : ZMod N), μ = ↑(ringEigval N Φ ↑k.val)

                    ★★ Those levels are the whole spectrum. Every eigenvalue of the ring is one of the 2 cos((2πk + Φ)/N).

                    The flux is observable #

                    At Φ = π no level of the three-site ring is 2: 2 cos((2πm + π)/3) = 2 would force 2m + 1 = 6n.

                    ★★★ The flux is observable: the Aharonov–Bohm phase is not a gauge artefact. No unitary conjugation carries the three-site ring with no flux to the three-site ring with flux π — the level 2 of the first is not a level of the second. Together with gaugeDiag_conj_ringHam_oneBond (the phases may be redistributed at will) this is the Aharonov–Bohm effect: the vector potential is not observable, the flux is.

                    The flux is determined by the spectrum #

                    range_ringEigval_add_two_pi says the spectrum cannot distinguish Φ from Φ + 2π, and energy_lt_energy_of_flux_lt (Empirical/QM/AharonovBohm.lean) says a fixed label's level moves strictly with the flux over a range where nothing wraps. Neither says that the level set pins the flux down, which is what "the flux is observable" claims in full. It does, modulo a quantum and up to sign, because the top of the spectrum is 2 cos(d(Φ)/N) with d(Φ) the distance from Φ to the nearest whole quantum, and that is a strictly decreasing function of d.

                    noncomputable def QuantumInfo.AharonovBohm.fluxDist (Φ : ℝ) :

                    The distance from Φ to the nearest whole flux quantum: the only thing about the flux that the ring's spectrum can see.

                    Equations
                    Instances For
                      theorem QuantumInfo.AharonovBohm.abs_sub_two_pi_mul (Φ : ℝ) (j : ℤ) :
                      |Φ - 2 * Real.pi * ↑j| = |Φ / (2 * Real.pi) - ↑j| * (2 * Real.pi)

                      The distance to a given quantum, measured in units of the quantum.

                      ★ No quantum is nearer. fluxDist really is the distance to the nearest one.

                      ★ Half a quantum is as far as a flux can be from the nearest whole one.

                      The cosine of a level's argument is the cosine of its distance from a whole turn.

                      theorem QuantumInfo.AharonovBohm.ringEigval_le {N : ℕ} (hN : 0 < N) (Φ : ℝ) (m : ℤ) :
                      ringEigval N Φ m ≤ 2 * Real.cos (fluxDist Φ / ↑N)

                      ★★ No level rises above 2 cos(fluxDist Φ / N): a label's argument sits at least fluxDist Φ / N from a whole turn, and cosine falls away from it.

                      ★★ The maximum is attained, at the label that centres its mode on the flux.

                      ★★★ The top of the spectrum reads the flux: the greatest level is 2 cos(fluxDist Φ / N), a strictly decreasing function of the distance from the flux to the nearest whole quantum.

                      theorem QuantumInfo.AharonovBohm.fluxDist_eq_of_range_eq {N : ℕ} (hN : 0 < N) {Φ Φ' : ℝ} (h : Set.range (ringEigval N Φ) = Set.range (ringEigval N Φ')) :

                      ★★★ The spectrum determines the flux distance: two rings of the same size with the same level set sit at the same distance from a whole quantum.

                      ★★ The spectrum cannot see the sign of the flux: reversing it permutes the levels, so the ambiguity in the theorem below is real and not an artefact of the proof.

                      theorem QuantumInfo.AharonovBohm.exists_eq_of_range_ringEigval_eq {N : ℕ} (hN : 0 < N) {Φ Φ' : ℝ} (h : Set.range (ringEigval N Φ) = Set.range (ringEigval N Φ')) :
                      ∃ (k : ℤ), Φ' = Φ + 2 * Real.pi * ↑k ∨ Φ' = -Φ + 2 * Real.pi * ↑k

                      ★★★ The flux is determined by the spectrum, at every ring size: two fluxes with the same level set differ by a whole quantum, or are reflections of one another in a whole quantum. With range_ringEigval_add_two_pi and range_ringEigval_neg the converse holds as well, so this is exactly what a spectroscopic measurement of the ring determines — no more and no less.