mcpbeat Sign in

Proof Skeleton Generator Agent Skill

Generate structured proof skeletons with tactics, strategies, and intermediate lemmas for theorems in Isabelle/HOL or Coq. Use when users need to: (1) Create proof outlines for theorem statements, (2) Generate proof structure with tactic placeholders, (3) Identify key lemmas needed for a proof, (4) Plan proof strategies (induction, case analysis, forward/backward reasoning), (5) Scaffold proofs with intermediate steps and subgoals, or (6) Convert theorem statements into detailed proof templates. Supports both Isabelle/HOL and Coq equally.

7k tokens
context cost
the whole folder, loaded on every use
4
files
instructions only
0
copies elsewhere
how many repositories repackaged it
141
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/ArabelaTso/Skills-4-SE --skill proof-skeleton-generator

The instruction itself

24 sections, as written by the author

Proof Skeleton Generator

Generate structured proof skeletons with tactics, proof strategies, and key lemmas for theorems in Isabelle/HOL or Coq.

Workflow

1. Analyze the Theorem Statement

Examine the theorem to understand:

  • Quantifiers: Universal (∀/forall) or existential (∃/exists)
  • Logical structure: Implications, conjunctions, disjunctions
  • Data types involved: Lists, natural numbers, custom types
  • Complexity: Simple equality vs. complex property

2. Choose Target System

Ask the user which proof assistant to target:

  • Isabelle/HOL: Uses Isar structured proofs, automatic tactics
  • Coq: Uses Ltac tactics, more explicit proof terms
  • Both: Generate skeletons for both systems

If not specified, default to generating both versions.

3. Determine Proof Strategy

Based on the theorem structure, identify the appropriate proof technique:

Induction - When theorem involves recursive types:

  • List induction for list properties
  • Natural number induction for arithmetic
  • Structural induction for custom datatypes
  • Strong induction when needed

Case Analysis - When theorem involves:

  • Boolean conditions
  • Option types (None/Some)
  • Sum types or custom constructors
  • Conditional expressions

Direct Proof - When theorem is:

  • Simple equality that simplifies
  • Follows directly from definitions
  • Provable by automatic tactics

Forward Reasoning - Build up facts:

  • Establish intermediate lemmas
  • Chain implications
  • Construct witnesses for existentials

Backward Reasoning - Work from goal:

  • Apply rules to reduce goal
  • Split conjunctions
  • Introduce implications

4. Identify Required Lemmas

Determine helper lemmas that may be needed:

  • Standard library lemmas: Check if already available
  • Custom lemmas: Properties that need separate proof
  • Induction hypotheses: How they'll be used
  • Intermediate facts: Steps in the main proof

5. Generate Proof Skeleton

Use the reference files for tactics and patterns:

  • Isabelle tactics: See isabelle_tactics.md
  • Coq tactics: See coq_tactics.md
  • Complete examples: See examples.md

Create a skeleton that includes:

  • Proof structure with appropriate method (induction, cases, etc.)
  • Case labels for each subgoal
  • Strategy comments explaining the approach
  • Tactic placeholders (sorry/admit) for incomplete steps
  • Intermediate assertions (have/assert) for key facts
  • Helper lemmas with their own skeletons

6. Structure the Output

Organize the proof skeleton clearly:

For Isabelle/HOL:

(* Helper lemmas if needed *)
lemma helper_name:
  "statement"
  sorry

(* Main theorem *)
theorem theorem_name:
  assumes "assumptions"
  shows "conclusion"
proof (method)
  case case_name
  (* Goal: ... *)
  (* Strategy: ... *)
  (* Key steps:
     1. ...
     2. ...
  *)
  show ?case sorry
next
  (* Additional cases *)
qed

For Coq:

(* Helper lemmas if needed *)
Lemma helper_name :
  statement.
Proof.
  (* proof *)
  admit.
Admitted.

(* Main theorem *)
Theorem theorem_name :
  statement.
Proof.
  intros.
  induction ... as [| ...].
  - (* Case: ... *)
    (* Strategy: ... *)
    admit.
  - (* Case: ... *)
    (* IH: ... *)
    (* Strategy: ... *)
    admit.
Admitted.

Key Principles

Clarity

  • Add comments explaining the proof strategy
  • Label each case clearly
  • Document what the induction hypothesis provides
  • Explain non-obvious steps

Completeness

  • Include all necessary cases
  • Identify all required helper lemmas
  • Show the structure of nested proofs
  • Indicate where automation might work

Practicality

  • Use sorry (Isabelle) or admit (Coq) for incomplete steps
  • Suggest automatic tactics where applicable
  • Note when sledgehammer (Isabelle) might help
  • Indicate which steps are trivial vs. challenging

Correctness

  • Ensure case analysis is exhaustive
  • Verify induction is on the right variable
  • Check that the proof structure matches the goal
  • Validate that lemmas are actually needed

Proof Strategy Selection Guide

When to Use Induction

List properties: forall xs, P xs

  • Induction on xs
  • Base case: empty list
  • Inductive case: x :: xs with IH P xs

Natural number properties: forall n, P n

  • Induction on n
  • Base case: 0 or Suc 0
  • Inductive case: Suc n with IH P n

Recursive function properties: When function is defined recursively

  • Induct on the recursive argument
  • IH mirrors the recursive call

When to Use Case Analysis

Conditional expressions: if b then ... else ...

  • Split on b (true/false cases)

Option types: match opt with None => ... | Some x => ...

  • Case on None and Some x

Sum types: match x with Left a => ... | Right b => ...

  • Case on each constructor

When to Use Direct Proof

Definitional equalities: f x = g x where definitions unfold

  • Unfold definitions and simplify

Trivial goals: Provable by auto, simp, reflexivity

  • Try automatic tactics first

When to Use Lemmas

Repeated subgoals: Same property needed multiple times

  • Extract as separate lemma

Complex intermediate facts: Multi-step derivations

  • Prove as helper lemma

Standard properties: Check standard library first

  • Import and use existing lemmas

Common Patterns

Induction with Simplification

proof (induction xs)
  case Nil
  show ?case by simp
next
  case (Cons x xs)
  show ?case using Cons.IH by simp
qed

Case Analysis with Subproofs

proof (cases x)
  case Constructor1
  show ?thesis
  proof -
    (* detailed steps *)
  qed
next
  case Constructor2
  (* ... *)
qed

Forward Reasoning Chain

proof -
  have step1: "fact1" by simp
  have step2: "fact2" using step1 by simp
  show ?thesis using step2 by simp
qed

Backward Reasoning with Rules

proof (rule some_rule)
  show "premise1" sorry
  show "premise2" sorry
qed

Tips

  • Start with structure: Get the proof skeleton right before filling details
  • Use comments liberally: Explain strategy and key steps
  • Identify IH usage: Note where induction hypothesis is applied
  • Check standard library: Many lemmas already exist
  • Suggest automation: Note where auto, simp, blast might work
  • Be realistic: Mark challenging steps as sorry/admit
  • Both systems: Ensure semantic equivalence when generating both
  • Nested induction: Handle carefully with clear variable names
  • Termination: Note when termination proofs are needed

Other skills for the same job

different authors, same section of the catalogue
MCP Builder
by anthropics
vendor ×13

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

30k tokens scripts
Changelog Generator
by frostant
×9

Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.

774 tokens
Finishing A Development Branch
by ZhanlinCui
×7

Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup

1k tokens
MCP Builder
by JayZeeDesign
×7

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

37k tokens scripts
Vercel React Native Skills
by vercel-labs
vendor ×6

React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.

39k tokens
Vercel React Best Practices
by ratacat
×5

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

34k tokens
Next Best Practices
by vercel-labs
vendor ×4

Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling

20k tokens
Using Git Worktrees
by ZhanlinCui
×4

Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification

1k tokens

How to use it

Copy the folder

Take arabelatso/proof-skeleton-generator from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.