reduce-crack-basics

hinsley's avatarfrom hinsley

Use when solving overdetermined algebraic/ODE/PDE systems with the CRACK package in REDUCE, especially for Lie symmetry determining equations; covers crack() usage, dependency declarations, batch vs interactive control, and interpreting solutions and case splits.

⭐1stars🔀0forks📁View on GitHub🕐Updated Jan 8, 2026

When & Why to Use This Skill

This Claude skill provides a specialized workflow for solving overdetermined algebraic, ODE, and PDE systems using the CRACK package within the REDUCE computer algebra system. It excels at handling Lie symmetry determining equations, guiding users through functional dependency declarations, batch versus interactive execution modes, and the systematic interpretation of complex mathematical case splits and solutions.

Use Cases

  • Case 1: Calculating and solving determining equations for Lie symmetries of differential equations to find similarity reductions and invariant solutions.
  • Case 2: Solving overdetermined systems of algebraic equations in theoretical physics or engineering where manual computation is prone to error.
  • Case 3: Managing complex symbolic computation workflows by switching between automated batch processing and interactive module-by-module refinement.
  • Case 4: Interpreting multi-solution outputs by identifying free functions, constants, and non-zero assumptions to understand the physical or mathematical constraints of a system.
namereduce-crack-basics
descriptionUse when solving overdetermined algebraic/ODE/PDE systems with the CRACK package in REDUCE, especially for Lie symmetry determining equations; covers crack() usage, dependency declarations, batch vs interactive control, and interpreting solutions and case splits.

CRACK workflows in REDUCE

Docker readiness (when running in containers)

  • Confirm the CLI and daemon: docker --version then docker info.
  • If the daemon is down, start Docker Desktop (macOS: open -a Docker) and wait for docker info to succeed.
  • If you use Colima instead of Docker Desktop, start it with colima start and re-check docker info.
  • If you see permission denied ... docker.sock, rerun with elevated permissions or fix socket access.

Quick start (batch mode)

% Declare dependencies for all unknown functions

depend f, x, y;
depend g, x;

% Call crack with equations, inequalities, unknowns, extra vars
crack({eq1, eq2}, {}, {f, g}, {});

Before you call CRACK

  • Always declare functional dependence with depend for every unknown function.
  • Unknown functions must appear polynomially in the equations.
  • Keep parametric functions out of the {fun1,...} list; declare their dependencies and include any extra independent variables in the 4th argument.
  • If you need interactive control, set off batch_mode; before calling crack.

Batch vs interactive control

  • Batch mode runs modules in proc_list automatically.
  • Interactive mode lets you inspect, choose equations, and run modules step by step.
  • A hybrid approach is to insert stop batch into proc_list so you can switch to interactive once safe steps are done.

Always explain results in natural language

After any CRACK run, summarize the output clearly:

  • State what CRACK was solving (e.g., determining equations for Lie symmetries).
  • Report the number of solutions returned and whether there were case splits.
  • For each solution, list:
    • remaining conditions,
    • solved assignments for functions,
    • remaining free functions/constants,
    • nonzero assumptions.
  • Explain what free functions mean (underdetermined/infinite-dimensional families).
  • If CRACK returns {} or contradictions, say that no solutions exist under the given assumptions.
  • Connect to PDE theory: these solutions typically determine infinitesimals of symmetry generators, which enable similarity reduction, invariant solutions, and conservation-law derivations.

Use the reference guide for details

Open resources/crack_manual_synopsis.md for:

  • the full interactive command set,
  • module numbers and behavior,
  • strategy notes and troubleshooting,
  • global flags and tuning parameters.

When CRACK is used inside ReLie

ReLie calls CRACK inside reliesolve(). If ReLie stalls or returns partial solutions:

  • enable CRACK verbosity in ReLie (onprintcrack()),
  • run the staged pipeline (relieinit, relieinv, reliedet) and inspect the determining equations,
  • then solve interactively with CRACK if needed.