Site output
This page shows what the plugin produces. The program from Navigator ran as its own process while this site was being built:
let buildSite (baseUrl: string) (arguments: string[]) =
let options =
Rocq.defaults
|> Rocq.project "example/_CoqProject"
|> Rocq.facts (Some "example/facts.json")
|> Rocq.config (Some "example/navigator.json")
Site.create "Tally"
|> Site.baseUrl baseUrl
|> Site.output ".work/minimal"
|> Site.noStaticFiles
|> Rocq.register options
|> Site.collection (
Rocq.collection "proofs" options
|> Collection.layout (Rocq.reader options)
)
|> fun site -> Nacara.run site arguments
The build
» Loaded the content, 501 ms
✓ Built 4 pages, 19 written, 623 ms
exit code 0
The files
Tally.Core.html 24374 bytes
Tally.Laws.html 26718 bytes
Tally.Prose.html 22214 bytes
assets/fonts/Inter-wght.woff2 48256 bytes
assets/fonts/JetBrainsMono-Regular.woff2 69440 bytes
assets/fonts/JetBrainsMono-SemiBold.woff2 70820 bytes
assets/fonts/OFL-Inter.txt 4477 bytes
assets/fonts/OFL-JetBrainsMono.txt 4524 bytes
assets/fonts/OFL-SourceSerif4.txt 4407 bytes
assets/fonts/SourceSerif4-wght-italic.woff2 51576 bytes
assets/fonts/SourceSerif4-wght.woff2 50936 bytes
assets/navigator.css 26900 bytes
assets/navigator.js 406015 bytes
data/Tally.Core.symbols.json 10160 bytes
data/Tally.Laws.symbols.json 6600 bytes
data/Tally.Prose.symbols.json 6602 bytes
data/index.symbols.json 252 bytes
data/search.json 6024 bytes
index.html 12639 bytes
A page per module, the index, the shared stylesheet and client, fonts, and the data the client fetches. Every file is static, so any file host will serve it.
The HTML
This is the declaration size from Tally.Core.html, with a line break added before each block for reading. The source text is in the markup, the reference links work without a script, and the proof and reference lists fold with details.
Fixpoint size (t : tally) : nat :=
match t with
| empty => 0
| _ :: rest => S (size rest)
end.
<section class="decl documented" id="size">
<div class="doc">
<p>How many counts a tally holds.</p>
</div>
<div class="args">
<p class="args-label">Arguments</p>
<div class="args-rows">
<div class="args-row" data-binders="b4.3">
<div class="args-sig"><span class="args-name">t</span><span class="args-type"> : <a href="/FSharp.Data.Rocq/example/Tally.Core.html#tally" data-ref="s0">tally</a></span></div>
<div class="args-text">the tally measured.</div></div></div></div>
<div class="panel">
<details class="body" open>
<summary data-lines="5 lines">
<pre class="statement"><code><span class="l"><span class="kw">Fixpoint</span> size (<span data-ref="b4.3">t</span> : <a href="/FSharp.Data.Rocq/example/Tally.Core.html#tally" data-ref="s0">tally</a>) : <span data-ref="x3">nat</span> :=
</span></code></pre></summary>
<pre class="statement"><code><span class="l" style="--i:2"> <span class="kw">match</span> <span data-ref="b4.3">t</span> <span class="kw">with</span>
</span><span class="l" style="--i:2"> | <a href="/FSharp.Data.Rocq/example/Tally.Core.html#tally" data-ref="s1">empty</a> => 0
</span><span class="l" style="--i:2"> | _<a href="/FSharp.Data.Rocq/example/Tally.Core.html#d1" data-ref="s7"> :: </a>rest => <span data-ref="x0">S</span> (<a href="/FSharp.Data.Rocq/example/Tally.Core.html#size" data-ref="s10">size</a> rest)
</span><span class="l" style="--i:2"> <span class="kw">end</span>.</span></code></pre></details><button type="button" class="refs-chip" aria-haspopup="dialog">uses 5 · used by 3</button>
<div class="args">
<p class="args-label">Arguments</p>
<div class="args-rows">
<div class="args-row" data-binders="b4.3">
<div class="args-sig"><span class="args-name">t</span><span class="args-type"> : <a href="/FSharp.Data.Rocq/example/Tally.Core.html#tally" data-ref="s0">tally</a></span></div>
<div class="args-text">the tally measured.</div></div></div></div></div>
<details class="refs">
<summary>References</summary>
<div class="ref-list" data-list="uses">
<p>Uses</p>
<ul>
<li><a href="/FSharp.Data.Rocq/example/Tally.Core.html#tally" data-ref="s0">tally</a></li>
<li><a href="/FSharp.Data.Rocq/example/Tally.Core.html#tally" data-ref="s1">empty</a></li>
<li><a href="/FSharp.Data.Rocq/example/Tally.Core.html#d1" data-ref="s7">::</a></li>
<li><span data-ref="x0">S</span></li>
<li><span data-ref="x3">nat</span></li></ul></div>
<div class="ref-list" data-list="used-by">
<p>Used by</p>
<ul>
<li><a href="/FSharp.Data.Rocq/example/Tally.Laws.html#counts_are_small" data-ref="s14">counts_are_small</a></li>
<li><a href="/FSharp.Data.Rocq/example/Tally.Laws.html#size_stable" data-ref="s15">size_stable</a></li>
<li><a href="/FSharp.Data.Rocq/example/Tally.Laws.html#size_append" data-ref="s16">size_append</a></li></ul></div></details></section>