بنقرة واحدة
isabelle-intro-elim-rules
How to read Isabelle introduction and elimination rules
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
How to read Isabelle introduction and elimination rules
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف 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.