Rewrite Rulesbase/not-exists-to-nexists

base/not-exists-to-nexists

Rewrite \not\exists to the canonical AMS \nexists character when the target is available.

Rewrite patterns#

  1. command\not\exists\nexists
  2. literal\not∃\nexists

Examples#

Each example shows this rule applied in isolation. A complete normalization profile may make additional changes.

Command#

Before

\not\exists x

After this rule

\nexists x

Rendering verified with the declared packages.

Literal#

Before

\not∃ x

After this rule

\nexists x

Rendering verified with the declared packages.

Same family#

Notes#

Uses the exact MathJax not_remap entry U+2203 -> U+2204. Accept a bare U+2203 Char or the zero-argument known exists character command. The source owner remains base because not is a base command; AMS is required only for the produced character target, whose availability must guard the rule. Both atoms must occupy the same Root or Group child slot. Scripted, arguments, unknown nodes, Error, Environment, and cross-slot content fail closed. Consume not and its sibling atomically. Every Applied result removes the matched cmd:not node and its exists sibling; all other shapes return Skipped, so the number of eligible cmd:not nodes strictly decreases.

Disable this rule#

TransformEngine(profile="corpus", disable_rules=["base/not-exists-to-nexists"])
new TransformEngine({ profile: 'corpus', disableRules: ['base/not-exists-to-nexists'] })

Open in Playground