# Reduce Crack Basics

> 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.

- Skill: `hinsley/reduce-crack-basics-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add hinsley/reduce-crack-basics-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hinsley/reduce-crack-basics-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: hinsley (https://skillmd.com/u/hinsley)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/hinsley/reduce-crack-basics-2

---


# 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)

```reduce
% 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.

