⚠️The 0.13 release refactored our HTML, so double-check your custom CSS rules!⚠️

Proofs, Theorems, and Algorithms#

Infrastructure to support items such as proof and algorithm style formatting is provided by the sphinx-proof extension.

This extension supports the html and pdflatex builders.

sphinx-proof includes support for the following directives:

Installation#

Warning

This is not currently a default package in jupyter-book as is a relatively new package.

It needs to be enabled through the _config.yml after installation.

To install you can use pip:

pip install sphinx-proof


Adding extension through _config.yml#

Open _config.yml and add sphinx_proof to:

sphinx:
extra_extensions:
- sphinx_proof


Using sphinx-proof#

This package uses a prf sphinx domain.

All markup objects follow the {prf:<typeset>} (such as {prf:proof}) pattern and allows the directives to be referenced using the inline role {prf:ref}.

Warning

When referencing directives in sphinx-proof you need to use the {prf:ref}<label>  inline role. Using other cross-referencing facilities will not work such as [](<label>)

Below we show an example using the {prf:algorithm} directive.

A similar pattern can be followed for the other syntax supported by sphinx-proof.

In MyST Markdown, you can add an algorithm to your document using the algorithm directive:

Algorithm 1 (Ford–Fulkerson)

Inputs Given a Network $$G=(V,E)$$ with flow capacity $$c$$, a source node $$s$$, and a sink node $$t$$

Output Compute a flow $$f$$ from $$s$$ to $$t$$ of maximum value

1. $$f(u, v) \leftarrow 0$$ for all edges $$(u,v)$$

2. While there is a path $$p$$ from $$s$$ to $$t$$ in $$G_{f}$$ such that $$c_{f}(u,v)>0$$ for all edges $$(u,v) \in p$$:

1. Find $$c_{f}(p)= \min \{c_{f}(u,v):(u,v)\in p\}$$

2. For each edge $$(u,v) \in p$$

1. $$f(u,v) \leftarrow f(u,v) + c_{f}(p)$$ (Send flow along the path)

2. $$f(u,v) \leftarrow f(u,v) - c_{f}(p)$$ (The flow might be “returned” later)

will be rendered as

Algorithm 2 (Ford–Fulkerson)

Inputs Given a Network $$G=(V,E)$$ with flow capacity $$c$$, a source node $$s$$, and a sink node $$t$$

Output Compute a flow $$f$$ from $$s$$ to $$t$$ of maximum value

1. $$f(u, v) \leftarrow 0$$ for all edges $$(u,v)$$

2. While there is a path $$p$$ from $$s$$ to $$t$$ in $$G_{f}$$ such that $$c_{f}(u,v)>0$$ for all edges $$(u,v) \in p$$:

1. Find $$c_{f}(p)= \min \{c_{f}(u,v):(u,v)\in p\}$$

2. For each edge $$(u,v) \in p$$

1. $$f(u,v) \leftarrow f(u,v) + c_{f}(p)$$ (Send flow along the path)

2. $$f(u,v) \leftarrow f(u,v) - c_{f}(p)$$ (The flow might be “returned” later)

and can be referenced using the label assigned to the algorithm such as {prf:ref}ford-fulkerson  which will provide a link such as Algorithm 2.