con un clic
isabelle-intro-elim-rules
How to read Isabelle introduction and elimination rules
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
How to read Isabelle introduction and elimination rules
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Operational pipeline to start, monitor, STOP, and recover the MathBench missing-lemma loop running in multi-node fleet mode on the MBZUAI cluster (watcher + slurmx fleet REPLs + login-node RPC host + serial adjudication + phase-2 import reconciliation). Use when launching/resuming the fleet run, stopping it cleanly, recovering after a crash, or applying the hard-won operational rules (correct kill sequence, git safety on the shared checkout, shell/conda/timeout fixes, re-collection prerequisite). For the single-machine AoA×PutnamBench eval use `aoa-putnam-eval` instead; for the design rationale of the loop see `MISSING_LEMMA_LOOP.md`.
How to refresh the local semantic embedding database (~1.5 GB of LMDB at ~/.cache/Isabelle_Semantic_Embedding). The development channel is the Hugging Face Hub tarball via manage_data.py (get/update). End users instead pull it anonymously from Cloudflare R2 with `semantics_manage.py pull`. Use when setting up or refreshing the semantic DB on a machine, or when deformalizations / vector stores are stale or missing. Do NOT run R2 `push` — it overwrites the shared remote and is a human-only action.
How to repackage/upload and download/unpack the Isabelle + paired AFP distribution, published together as contrib/Isabelle2025-2_and_afp-2026-05-13.tar.zst on the Hugging Face Hub (via manage_data.py update/get). Use when publishing a rebuilt Isabelle+AFP tarball (after isabelle scala_build, patches, etc.) or installing/refreshing the distribution on another machine.
Playbook for adding a new import to MathBench_ProverBase and reconciling any syntax conflicts (constant/type short-name resolution and notation) so that PutnamBench problems still parse to identical goal terms. Use when adding/changing imports of the MathBench_Prover session, or when investigating MathBench-vs-PutnamBench environment divergences.
How to read constants and theorems generated by Isabelle datatype and codatatype definitions
Essential reference for all Isabelle/ML development — system library, data structures, exception handling, and coding patterns. Load this skill whenever writing or modifying Isabelle/ML code.
| name | isabelle-intro-elim-rules |
| description | How to read Isabelle introduction and elimination rules |
Inference rules are expressed in HHF (Hereditary Harrop Formula).
Meta implication ⟹ structures formulas in an inference rule, while ⟶ is the implication operator used inside formulas. For example, the typical natural deduction
P ⟶ Q P
---------- (Modus Ponens)
Q
is written as P ⟶ Q ⟹ P ⟹ Q (⟹ binds weaker than ⟶; both are right-associative).
Meta quantifier ⋀ binds local variables. The typical natural deduction
P x
---- for arbitrary x
∀x. P x
is written as (⋀x. P x) ⟹ ∀x. P x (⋀ binds weaker than ∀).
Notation: ⟦P; Q⟧ ⟹ R syntactically equals P ⟹ Q ⟹ R.
An introduction rule decomposes a goal into simpler subgoals. For example, notI: (P ⟹ False) ⟹ ¬P decomposes ¬P into showing False from P (proof by contradiction). conjI: P ⟹ Q ⟹ P ∧ Q splits P ∧ Q into subgoals P and Q.
Generally, a rule of the form
(A₁₁ ⟹ ... ⟹ A₁ₙ ⟹ C₁) ⟹ ... ⟹ (Aₘ₁ ⟹ ... ⟹ Aₘₙ ⟹ Cₘ) ⟹ C
decomposes goal C into m subgoals, where the i-th subgoal assumes Aᵢ₁, ... and shows Cᵢ.
⋀ in a subgoal introduces locally fixed variables, e.g. in exE: ∃x. P x ⟹ (⋀x. P x ⟹ Q) ⟹ Q, ⋀x fixes a local witness x.
An elimination rule decomposes an assumption into more usable parts. For example, conjE: P ∧ Q ⟹ (P ⟹ Q ⟹ R) ⟹ R decomposes P ∧ Q into separate assumptions P and Q. disjE: P ∨ Q ⟹ (P ⟹ R) ⟹ (Q ⟹ R) ⟹ R does case analysis on P ∨ Q.
Generally, an elimination rule of the form
H ⟹ (B₁₁ ⟹ ... ⟹ B₁ₙ ⟹ R) ⟹ ... ⟹ (Bₘ₁ ⟹ ... ⟹ Bₘₙ ⟹ R) ⟹ R
decomposes assumption H into m cases, where the i-th provides Bᵢ₁, ... as new assumptions, each showing goal R.
Why this form? R is the goal to be proved. The rule says: given H, if we can show R from each set of decomposed cases, then R holds. This is how H is "eliminated" — replaced by simpler pieces that suffice to reach the goal.
A rule in A ⟹ B form is also a legitimate member of the elimination-rule category, read as: decompose B out of the assumption A. For example, conjunct1: A ∧ B ⟹ A extracts the left component from a conjunction.
A connective/predicate may have several destruction rules, each extracting a different component: conjunct1: A ∧ B ⟹ A and conjunct2: A ∧ B ⟹ B. Another example: singletonD: b ∈ {a} ⟹ b = a.
The two shapes are interconvertible: A ⟹ B corresponds to A ⟹ (B ⟹ R) ⟹ R. Rule collections (e.g. retrieved "elimination rules") therefore mix both shapes: continuation-style elimination rules and forward-style destruction rules, the latter kept in their original forward form.