Skip to content

d means the chain and the CFT for the same class, and one docstring warns about the other's required value #157

Open

Description

@sotashimozono

The collision

For one and the same universality class — the infinite-randomness fixed point of the
1D random transverse-field Ising chain — two sibling lookups take a keyword called d
and require different values of it:

where call required d what d means there
this package InfiniteRandomness(ψ, ν, x_m, d) 1 the chain's spatial dimension
QAtlas fetch(Universality{:IsingSDRG}, CentralCharge(); d) 2 the 1+1D CFT's dimension

InfiniteRandomness's own docstring already warns about the second value:

d is the chain's own dimension, not its classical image's. A random
transverse-field Ising chain is d = 1. Atlases hand out d = 2 for its clean
critical point's 2D classical image, so 2 is the number nearest to hand and it is
wrong: φ comes out 3.618 rather than the golden mean 1.618, unflagged.

So the warning names a hazard that the sibling lookup for the same class requires.
A consumer who reads the effective central charge with d = 2 — the only value that
lookup accepts — and carries that d into InfiniteRandomness gets φ = 3.618 with
no error, which is what the docstring says happens.

Why this is a vocabulary issue here

SpatialDimension is this package's quantity, and InfiniteRandomness is where the
constraint 0 < x_m < d and the derived φ = (d − x_m)/ψ live. The two meanings are
both legitimate; what is missing is that they are not the same variable and nothing
says so at the call site.

Options

  1. Name them apart. The CFT dimension is d + z at a conformal point and has no
    counterpart at an infinite-randomness one (the docstring already observes there is
    no finite d + z to confuse it with). Giving the CFT lookup its own keyword would
    end the collision at the source.
  2. Cross-reference. Keep both, and have InfiniteRandomness's warning name the
    sibling lookup explicitly, so the hazard is greppable from the side that triggers it.

Option 1 is a breaking change in the atlas; option 2 is documentation. Either is a
decision for this package, since it owns the quantity.

Activity

  1. sotashimozono commented on Oct 14, 2026

    @sotashimozono
    MemberAuthor

    Hermes の整理(自動。何も変更していません)

    状態: #159 (merged 2026-09-14) が、このリポジトリ側の半分(InfiniteRandomness の警告に fetch(Universality{:IsingSDRG}, CentralCharge(); d = 2) を明示)を実施済みです。#159 本文に「もう一方の選択肢(CFT 側に別 keyword)は atlas の breaking change で owner の判断、#157 は そのため open」とあります。
    QAtlasHub/QAtlas.jl 側では src/universalities/IsingSDRG/IsingSDRG.jl の fetch(::Universality{:IsingSDRG}, ::CriticalExponents; d::Int=2) と docs が d=2 のままで、現時点で衝突は残っています。この件を追う QAtlas 側の issue は検索では見つかりませんでした(要確認)。

    次の一手: 判断の場所が QAtlas なので、そちらに issue を立てて本 issue から参照するか、本 issue を「QAtlas 側の判断待ち」と明記して残すかを決める。

    関連: #151 (d を fixed point が持つ設計), #159, QAtlasHub/QAtlas.jl#729 (採用 PR)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions