Skip to content

StarExec-ARC is a framework for containerizing Automated Theorem Proving (ATP) systems. It simplifies the deployment and scaling of ATPs using Podman and Kubernetes, enabling researchers to easily benchmark solvers in a modern, containerized StarExec environment.

Notifications You must be signed in to change notification settings

StarExecMiami/StarExec-ARC

Repository files navigation

StarExec-ARC
(Automated Reasoning Containerization)

GitHub Stars GitHub Issues Last Commit

CI/CD Docker Pulls GHCR

This repository contains code for the containerization of Automated Theorem Proving (ATP) systems. It also includes deployment scripts for these ATP containers within a containerized StarExec environment, utilizing Podman or Kubernetes with MicroK8s or Amazon EKS. The following guide explains how to set up the system.

Papers etc. (only background information and motivation)

Building and Running a Containerised StarExec

Prerequisites for All Use Cases

  • Install podman: Follow the installation guide.
    • Ensure that you own $HOME/.config and you have read-write permission.
    • Check if you already have it installed with podman --version.
    • macOS: Run brew install podman and start the Podman daemon with podman machine start.
    • Ubuntu: Execute sudo apt install podman or snap install podman --classic.
    • Fedora: Execute sudo dnf install podman.
    • Verify installation with podman --version.
  • Containerize StarExec:
    • Go to the starexec-containerised directory to build containerised StarExec.
    • Test the containerized StarExec using traditional StarExec .tgz/.zip packages.

Building Containerized ATP Systems

There are three types of ATP system packages that can be used in various ways in containerized StarExec:

  • Traditional StarExec .tgz/.zip packages:
    • Can run in containerized StarExec
    • This works because:
      • The .tgz/.zip contains neither run_image.py nor run_image_k8s.py
      • StarExec uses the local backend to start runsolver in the traditional StarExec way.
    • Cannot (or at least hould not) be used in containerized StarExec that is deployed in Kubernetes (microk8s or AWS)
  • Containerized ATP Systems:
    • Go to the provers-containerised directory to build containerised ATP systems.
    • Test in a terminal containerised ATP systems using the run_image.py script.
    • Cannot (or should not) be used in containerised StarExec.
  • Proxy-Prover ATP Systems:
    • Build a plain containerised ATP system first.
    • Go to the starexec-proxy-provers directory to build local proxy-prover ATP systems for podman.
    • Test local proxy-prover ATP systems using containerized StarExec.
      • Containerized StarExec detects the run_image.py script.
      • It uses the local backend, which uses run_image.py, which uses podman to run the container.
    • Go to the starexec-proxy-provers directory to build non-local proxy-prover ATP systems for Kubernetes.
    • Test the proxy-prover ATP systems using containerized StarExec.
      • Containerized StarExec detects the run_image_k8s.py script.
      • It uses the Kubernetes backend, which uses kubectl to manage the container within Kubernetes.

Deploying StarExec on Kubernetes

  • Using EKS:
    • Install kubectl:
      • macOS: Run brew install kubectl.
      • Ubuntu: Execute snap install kubectl --classic.
      • Verify installation with kubectl version.
  • Using MicroK8s:
    • Installation:
      • macOS: MicroK8s is not natively supported. Install via a Multipass virtual machine as per the MicroK8s macOS installation guide.
      • Ubuntu:
        • Run snap install microk8s --classic.
        • Add your user to the microk8s group: sudo usermod -aG microk8s $USER.
        • Change ownership: sudo chown -f -R $USER ~/.kube.
        • Reload group memberships: newgrp microk8s.
        • Optionally, add alias kubectl='microk8s kubectl' to your shell configuration file.
    • Verification:
      • Check status with microk8s status --wait-ready.
      • List nodes using microk8s kubectl get nodes.
  • Deploy StarExec:
    • Navigate to the starexec-kubernetes directory to deploy StarExec on MicroK8s or EKS.
    • Access the deployed StarExec website to upload your proxy-prover ATP systems and problem files.
      • URL Access:
        • MicroK8s: Run microk8s kubectl get svc to obtain the URL.
        • EKS without Route53: Execute kubectl get svc to get the URL.
        • EKS with Route53: The URL follows the format https://your_Route53_domaster.
      • Open the URL in your browser to start using StarExec.

Managing Podman/Docker Containers

Building a Container Image:

podman/docker build -t <TAG_NAME> <PATH_TO_DIRECTORY_WITH_DOCKERFILE>

Running a Container (Entrypoint):

podman/docker run --rm [--entrypoint <ENTRYPOINT_FILE>] <TAG_NAME> <ARGS>

Running a Container (Interactive Shell):

podman/docker run --rm -it <TAG_NAME>

Cleanup (Podman):

podman system prune --all --force && podman rmi --all

Forced Cleanup (Podman):

podman rmi --all --force

Cleanup (Docker):

docker system prune --all --force && docker rmi $(docker images -a -q)

About

StarExec-ARC is a framework for containerizing Automated Theorem Proving (ATP) systems. It simplifies the deployment and scaling of ATPs using Podman and Kubernetes, enabling researchers to easily benchmark solvers in a modern, containerized StarExec environment.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 6