Public entry point for the ShotTx tableau prover.
Three related APIs live here:
prove/1,prove/2,prove/3— attempt to proveconclusionfromassumptions(or aShotDs.Data.Problem). Returns aproof_result/0.sat/1,sat/2,sat/3— check a list of formulas for satisfiability without negating a conclusion. Returns the rawManagerresult.prove_string/1,prove_string/2,prove_string/3— thin convenience wrapper that formats the outcome viaformat_result/1.
Every call spins up a fresh ShotTx.Prover.SessionSupervisor and blocks
synchronously on the Manager until the search terminates (theorem,
countermodel, timeout, or exhausted iterative deepening). Configuration
is threaded through as a keyword list that is merged into a
ShotTx.Data.Parameters struct — see that module for the full list of
knobs, and ShotTx.Config for session-wide defaults.
Summary
Functions
Compiles a raw stats snapshot (as returned by prove/3 with stats: true)
into a structured report grouped by :timing, :search, :rules,
:branches, and :csp. Idempotent on already-compiled reports.
Formats a proof_result() as a short human-readable string for quick inspection.
Pretty-prints a stats snapshot or compiled report. Pass verbose: true to
include zero-valued rule/branch counters, or sections: [:timing, :csp] to
render a subset.
Shorthand delegating to the three-argument form.
Attempts to prove conclusion from assumptions.
Convenience wrapper that returns a human-readable string result,
preserving the original prove interface for quick testing.
Checks the satisfiability of a list of formulas. Delegates the execution to the Manager GenServer.
Types
@type proof_result() :: {:thm, ShotTx.Proof.t()} | {:csa, String.t(), ShotTx.Proof.t()} | :unknown | {:timeout, ShotTx.Proof.t()} | {:error, term()}
Functions
Compiles a raw stats snapshot (as returned by prove/3 with stats: true)
into a structured report grouped by :timing, :search, :rules,
:branches, and :csp. Idempotent on already-compiled reports.
@spec format_result(proof_result()) :: String.t()
Formats a proof_result() as a short human-readable string for quick inspection.
Pretty-prints a stats snapshot or compiled report. Pass verbose: true to
include zero-valued rule/branch counters, or sections: [:timing, :csp] to
render a subset.
@spec prove(ShotDs.Data.Problem.t() | ShotDs.Data.Term.term_id()) :: proof_result()
Shorthand delegating to the three-argument form.
Accepts either a ShotDs.Data.Problem (prove(problem) — no options), a
single ShotDs.Data.Term.term_id/0 conclusion (prove(conclusion)), or a
conclusion plus either an assumption list or options list.
See prove/3 for the primary interface and return type.
@spec prove( ShotDs.Data.Problem.t(), keyword() ) :: proof_result() | {proof_result(), map()}
@spec prove(ShotDs.Data.Term.term_id(), [ShotDs.Data.Term.term_id()] | keyword()) :: proof_result() | {proof_result(), map()}
@spec prove(ShotDs.Data.Term.term_id(), [ShotDs.Data.Term.term_id()], keyword()) :: proof_result() | {proof_result(), map()}
Attempts to prove conclusion from assumptions.
Accepts three call shapes:
prove(problem)— aProblemstruct with a conjecture and axioms.prove(conclusion)/prove(conclusion, assumptions)— term IDs.prove(conclusion, assumptions, opts)— full form;optsare forwarded toParametersexcept for the:defskey (a definition map).
Returns a proof_result().
@spec prove_string( ShotDs.Data.Problem.t() | ShotDs.Data.Term.term_id(), [ShotDs.Data.Term.term_id()], keyword() ) :: String.t()
Convenience wrapper that returns a human-readable string result,
preserving the original prove interface for quick testing.
@spec sat([ShotDs.Data.Term.term_id()] | ShotDs.Data.Term.term_id(), map(), keyword()) :: {:sat, map()} | {:unsat, map(), list(), map()} | {:unknown, term()} | {:timeout, ShotTx.Proof.t()} | {sat_result :: term(), stats :: map()}
Checks the satisfiability of a list of formulas. Delegates the execution to the Manager GenServer.