Elixir client for external automated theorem provers.
Three backends are supported:
- SystemOnTPTP — public tptp.org HTTP form API; see
AtpClient.SystemOnTptp. - StarExec — self-hosted StarExec instances; see
AtpClient.StarExec. - Isabelle —
isabelle serverinstances viaisabelle_elixir; seeAtpClient.Isabelle.
Each backend reads its settings through AtpClient.Config, which layers
config/config.exs on top of the library defaults and lets per-call options
override everything. See the AtpClient.Config module docs for details.
Configuration
Settings are resolved from three sources, in increasing precedence:
- Library defaults (declared in
AtpClient'smix.exs). - Application environment (typically
config/config.exs). - Per-call keyword options passed to the relevant function.
Only the settings required by the backends you actually use need to be set.
# config/config.exs
import Config
config :atp_client, :sotptp,
# The default points at tptp.org; override for a mirror or internal
# deployment:
url: "https://tptp.org/cgi-bin/SystemOnTPTPFormReply",
default_time_limit_sec: 10
config :atp_client, :starexec,
base_url: "https://starexec.example.org/starexec",
username: System.get_env("STAREXEC_USER"),
password: System.get_env("STAREXEC_PASS")
config :atp_client, :isabelle,
host: "isabelle.example.org",
port: 9999,
password: System.get_env("ISABELLE_PASSWORD"),
# Directory shared between this node and the Isabelle server. If the two
# see the same files under different paths (e.g. because one runs inside
# a container), set `isabelle_dir` separately:
local_dir: "/shared/problems",
isabelle_dir: "/shared/problems",
session: "HOL"Any setting may be overridden for a single call:
AtpClient.Isabelle.query(theory, session: "Main", raw: true)