diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/docs/coqdoc/ABS.abs_defs.html b/docs/coqdoc/ABS.abs_defs.html
new file mode 100644
index 0000000..6d9297d
--- /dev/null
+++ b/docs/coqdoc/ABS.abs_defs.html
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Definition i :
Set :=
nat.
+
Lemma eq_i:
forall (
x y :
i),
{x = y} + {x <> y}.
+
Proof.
+
decide equality;
auto with ott_coq_equality arith.
+
Defined.
+
Hint Resolve eq_i :
ott_coq_equality.
+
Definition fn :
Set :=
string.
+
Lemma eq_fn:
forall (
x y :
fn),
{x = y} + {x <> y}.
+
Proof.
+
decide equality;
auto with ott_coq_equality arith.
+
Defined.
+
Hint Resolve eq_fn :
ott_coq_equality.
+
Definition x :
Set :=
string.
+
Lemma eq_x:
forall (
x' y :
x),
{x' = y} + {x' <> y}.
+
Proof.
+
decide equality;
auto with ott_coq_equality arith.
+
Defined.
+
Hint Resolve eq_x :
ott_coq_equality.
+
Definition b :
Set :=
bool.
+
Lemma eq_b:
forall (
x y :
b),
{x = y} + {x <> y}.
+
Proof.
+
decide equality;
auto with ott_coq_equality arith.
+
Defined.
+
Hint Resolve eq_b :
ott_coq_equality.
+
Definition z :
Set :=
Z.
+
Lemma eq_z:
forall (
x y :
z),
{x = y} + {x <> y}.
+
Proof.
+
decide equality;
auto with ott_coq_equality arith.
+
Defined.
+
Hint Resolve eq_z :
ott_coq_equality.
+
+
+
Inductive T :
Set :=
+ |
T_bool :
T
+ |
T_int :
T.
+
+
+
Inductive t :
Set :=
+ |
t_b (
b5:
b)
+ |
t_int (
z5:
z) .
+
+
+
Inductive sig :
Set :=
+ |
sig_sig (
_:
list T) (
T_5:
T).
+
+
+
Inductive e :
Set :=
+ |
e_t (
t5:
t)
+ |
e_var (
x5:
x)
+ |
e_fn_call (
fn5:
fn) (
_:
list e) .
+
+
+
Inductive ctxv :
Set :=
+ |
ctxv_T (
T5:
T)
+ |
ctxv_sig (
sig5:
sig).
+
+
+
Inductive F :
Set :=
+ |
F_fn (
T_5:
T) (
fn5:
fn) (
_:
list (
T*x)) (
e5:
e).
+
+
+
Definition s :
Type :=
Map.t t.
+
+
+
Definition G :
Type :=
Map.t ctxv.
+
+
+
+induction principles
+
+
+
+
+definitions
+
+
+
+
+
+
Inductive typ_e :
G -> e -> T -> Prop :=
+ |
typ_bool :
forall (
G5:
G) (
b5:
b),
+
typ_e G5 (
e_t (
t_b b5))
T_bool
+ |
typ_int :
forall (
G5:
G) (
z5:
z),
+
typ_e G5 (
e_t (
t_int z5))
T_int
+ |
typ_var :
forall (
G5:
G) (
x5:
x) (
T5:
T),
+
(Map.find x5 G5 = Some (
ctxv_T T5 )
) ->
+
typ_e G5 (
e_var x5)
T5
+ |
typ_func_expr :
forall (
e_T_list:
list (
e*T)) (
G5:
G) (
fn5:
fn) (
T_5:
T),
+
(forall e_ T_,
In (e_,T_) (
map (
fun (
pat_: (
e*T)) =>
match pat_ with (e_,T_) =>
(e_,T_) end)
e_T_list)
-> (typ_e G5 e_ T_)) ->
+
(Map.find fn5 G5 = Some (
ctxv_sig (
sig_sig (
map (
fun (
pat_:(
e*T)) =>
match pat_ with (e_,T_) =>
T_ end )
e_T_list)
T_5) )
) ->
+
typ_e G5 (
e_fn_call fn5 (
map (
fun (
pat_:(
e*T)) =>
match pat_ with (e_,T_) =>
e_ end )
e_T_list))
T_5
+
with typ_F :
G -> F -> Prop :=
+ |
typ_func_decl :
forall (
T_x_list:
list (
T*x)) (
G5:
G) (
T_5:
T) (
fn5:
fn) (
e5:
e),
+
(Map.find fn5 G5 = Some (
ctxv_sig (
sig_sig (
map (
fun (
pat_:(
T*x)) =>
match pat_ with (T_,x_) =>
T_ end )
T_x_list)
T_5) )
) ->
+
typ_e (
fold_right (
fun (
ax :
x * T) (
G5 :
G) =>
Map.add (
fst ax) (
ctxv_T (
snd ax))
G5)
G5 (
map (
fun (
pat_:(
T*x)) =>
match pat_ with (T_,x_) =>
(x_,T_) end )
T_x_list) )
e5 T_5 ->
+
typ_F G5 (
F_fn T_5 fn5 T_x_list e5).
+
+
+
+definitions
+
+
+
+
+
+
Inductive red_e :
list F -> s -> e -> s -> e -> Prop :=
+ |
red_var :
forall (
F_list:
list F) (
s5:
s) (
x5:
x) (
t5:
t),
+
(Map.find x5 s5 = Some (
t5 )
) ->
+
red_e F_list s5 (
e_var x5)
s5 (
e_t t5)
+ |
red_fun_exp :
forall (
e'_list e_list:
list e) (
F_list:
list F) (
s5:
s) (
fn5:
fn) (
e_5:
e) (
s':
s) (
e':
e),
+
red_e F_list s5 e_5 s' e' ->
+
red_e F_list s5 (
e_fn_call fn5 ((
app e_list (
app (
cons e_5 nil) (
app e'_list nil)))))
s' (
e_fn_call fn5 ((
app e_list (
app (
cons e' nil) (
app e'_list nil)))))
+ |
red_fun_ground :
forall (
T_x_t_y_list:
list (
T*x*t*x)) (
F'_list F_list:
list F) (
T_5:
T) (
fn5:
fn) (
e5:
e) (
s5:
s),
+
True ->
+
red_e ((
app F_list (
app (
cons (
F_fn T_5 fn5 (
map (
fun (
pat_:(
T*x*t*x)) =>
match pat_ with (T_,x_,t_,y_) =>
(T_,x_) end )
T_x_t_y_list)
e5)
nil) (
app F'_list nil))))
s5 (
e_fn_call fn5 (
map (
fun (
pat_:(
T*x*t*x)) =>
match pat_ with (T_,x_,t_,y_) => (
e_t t_)
end )
T_x_t_y_list)) (
fold_right (
fun (
xt :
x * t) (
s5 :
s) =>
Map.add (
fst xt) (
snd xt)
s5)
s5 (
map (
fun (
pat_:(
T*x*t*x)) =>
match pat_ with (T_,x_,t_,y_) =>
(y_,t_) end )
T_x_t_y_list) ) (
e5 ) .
+
+
+
+
+
+
+
+
+
diff --git a/docs/coqdoc/ABS.abs_functional_metatheory.html b/docs/coqdoc/ABS.abs_functional_metatheory.html
new file mode 100644
index 0000000..5752d51
--- /dev/null
+++ b/docs/coqdoc/ABS.abs_functional_metatheory.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ABS Functional Metatheory
+
+
+
+
+
+
+
+
+
diff --git a/docs/coqdoc/config.js b/docs/coqdoc/config.js
new file mode 100644
index 0000000..1902b36
--- /dev/null
+++ b/docs/coqdoc/config.js
@@ -0,0 +1,79 @@
+var coqdocjs = coqdocjs || {};
+
+coqdocjs.repl = {
+ "forall": "∀",
+ "exists": "∃",
+ "~": "¬",
+ "/\\": "∧",
+ "\\/": "∨",
+ "->": "→",
+ "<-": "←",
+ "<->": "↔",
+ "=>": "⇒",
+ "<>": "≠",
+ "<=": "≤",
+ ">=": "≥",
+ "el": "∈",
+ "nel": "∉",
+ "<<=": "⊆",
+ "|-": "⊢",
+ ">>": "»",
+ "<<": "⊆",
+ "++": "⧺",
+ "===": "≡",
+ "=/=": "≢",
+ "=~=": "≅",
+ "==>": "⟹",
+ "<==": "⟸",
+ "False": "⊥",
+ "True": "⊤",
+ ":=": "≔",
+ "-|": "⊣",
+ "*": "×",
+ "::": "∷",
+ "lhd": "⊲",
+ "rhd": "⊳",
+ "nat": "ℕ",
+ "alpha": "α",
+ "beta": "β",
+ "gamma": "γ",
+ "delta": "δ",
+ "epsilon": "ε",
+ "eta": "η",
+ "iota": "ι",
+ "kappa": "κ",
+ "lambda": "λ",
+ "mu": "μ",
+ "nu": "ν",
+ "omega": "ω",
+ "phi": "ϕ",
+ "pi": "π",
+ "psi": "ψ",
+ "rho": "ρ",
+ "sigma": "σ",
+ "tau": "τ",
+ "theta": "θ",
+ "xi": "ξ",
+ "zeta": "ζ",
+ "Delta": "Δ",
+ "Gamma": "Γ",
+ "Pi": "Π",
+ "Sigma": "Σ",
+ "Omega": "Ω",
+ "Xi": "Ξ"
+};
+
+coqdocjs.subscr = {
+ "0" : "₀",
+ "1" : "₁",
+ "2" : "₂",
+ "3" : "₃",
+ "4" : "₄",
+ "5" : "₅",
+ "6" : "₆",
+ "7" : "₇",
+ "8" : "₈",
+ "9" : "₉",
+};
+
+coqdocjs.replInText = ["==>","<=>", "=>", "->", "<-", ":="];
diff --git a/docs/coqdoc/coqdoc.css b/docs/coqdoc/coqdoc.css
new file mode 100644
index 0000000..18dad89
--- /dev/null
+++ b/docs/coqdoc/coqdoc.css
@@ -0,0 +1,197 @@
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
+
+body{
+ font-family: 'Open Sans', sans-serif;
+ font-size: 14px;
+ color: #2D2D2D
+}
+
+a {
+ text-decoration: none;
+ border-radius: 3px;
+ padding-left: 3px;
+ padding-right: 3px;
+ margin-left: -3px;
+ margin-right: -3px;
+ color: inherit;
+ font-weight: bold;
+}
+
+#main .code a, #main .inlinecode a, #toc a {
+ font-weight: inherit;
+}
+
+a[href]:hover, [clickable]:hover{
+ background-color: rgba(0,0,0,0.1);
+ cursor: pointer;
+}
+
+h, h1, h2, h3, h4, h5 {
+ line-height: 1;
+ color: black;
+ text-rendering: optimizeLegibility;
+ font-weight: normal;
+ letter-spacing: 0.1em;
+ text-align: left;
+}
+
+div + br {
+ display: none;
+}
+
+div:empty{ display: none;}
+
+#main h1 {
+ font-size: 2em;
+}
+
+#main h2 {
+ font-size: 1.667rem;
+}
+
+#main h3 {
+ font-size: 1.333em;
+}
+
+#main h4, #main h5, #main h6 {
+ font-size: 1em;
+}
+
+#toc h2 {
+ padding-bottom: 0;
+}
+
+#main .doc {
+ margin: 0;
+ text-align: justify;
+}
+
+.inlinecode, .code, #main pre {
+ font-family: monospace;
+}
+
+.code > br:first-child {
+ display: none;
+}
+
+.doc + .code{
+ margin-top:0.5em;
+}
+
+.block{
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 5px;
+ padding: 10px;
+ text-align: center;
+}
+
+.block img{
+ margin: 15px;
+}
+
+table.infrule {
+ border: 0px;
+ margin-left: 50px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+td.infrule {
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
+ text-align: center;
+ padding: 0;
+ line-height: 1;
+}
+
+tr.infrulemiddle hr {
+ margin: 1px 0 1px 0;
+}
+
+.infrulenamecol {
+ color: rgb(60%,60%,60%);
+ padding-left: 1em;
+ padding-bottom: 0.1em
+}
+
+.id[type="constructor"], .id[type="projection"], .id[type="method"],
+.id[title="constructor"], .id[title="projection"], .id[title="method"] {
+ color: #A30E16;
+}
+
+.id[type="var"], .id[type="variable"],
+.id[title="var"], .id[title="variable"] {
+ color: inherit;
+}
+
+.id[type="definition"], .id[type="record"], .id[type="class"], .id[type="instance"], .id[type="inductive"], .id[type="library"],
+.id[title="definition"], .id[title="record"], .id[title="class"], .id[title="instance"], .id[title="inductive"], .id[title="library"] {
+ color: #A6650F;
+}
+
+.id[type="lemma"],
+.id[title="lemma"]{
+ color: #188B0C;
+}
+
+.id[type="keyword"], .id[type="notation"], .id[type="abbreviation"],
+.id[title="keyword"], .id[title="notation"], .id[title="abbreviation"]{
+ color : #2874AE;
+}
+
+.comment {
+ color: #808080;
+}
+
+/* TOC */
+
+#toc h2{
+ letter-spacing: 0;
+ font-size: 1.333em;
+}
+
+/* Index */
+
+#index {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+}
+
+#index #frontispiece {
+ margin: 1em auto;
+ padding: 1em;
+ width: 60%;
+}
+
+.booktitle { font-size : 140% }
+.authors { font-size : 90%;
+ line-height: 115%; }
+.moreauthors { font-size : 60% }
+
+#index #entrance {
+ text-align: center;
+}
+
+#index #entrance .spacer {
+ margin: 0 30px 0 30px;
+}
+
+ul.doclist {
+ margin-top: 0em;
+ margin-bottom: 0em;
+}
+
+#toc > * {
+ clear: both;
+}
+
+#toc > a {
+ display: block;
+ float: left;
+ margin-top: 1em;
+}
+
+#toc a h2{
+ display: inline;
+}
diff --git a/docs/coqdoc/coqdocjs.css b/docs/coqdoc/coqdocjs.css
new file mode 100644
index 0000000..959b42e
--- /dev/null
+++ b/docs/coqdoc/coqdocjs.css
@@ -0,0 +1,239 @@
+/* replace unicode */
+
+.id[repl] .hidden {
+ font-size: 0;
+}
+
+.id[repl]:before{
+ content: attr(repl);
+}
+
+/* folding proofs */
+
+@keyframes show-proof {
+ 0% {
+ max-height: 1.2em;
+ opacity: 1;
+ }
+ 99% {
+ max-height: 1000em;
+ }
+ 100%{
+ }
+}
+
+@keyframes hide-proof {
+ from {
+ visibility: visible;
+ max-height: 10em;
+ opacity: 1;
+ }
+ to {
+ max-height: 1.2em;
+ }
+}
+
+.proof {
+ cursor: pointer;
+}
+.proof * {
+ cursor: pointer;
+}
+
+.proof {
+ overflow: hidden;
+ position: relative;
+ transition: opacity 1s;
+ display: inline-block;
+}
+
+.proof[show="false"] {
+ max-height: 1.2em;
+ visibility: visible;
+ opacity: 0.3;
+}
+
+.proof[show="false"][animate] {
+ animation-name: hide-proof;
+ animation-duration: 0.25s;
+}
+
+.proof[show="true"] {
+ animation-name: show-proof;
+ animation-duration: 10s;
+}
+
+.proof[show="true"]:before {
+ content: "\25BC"; /* arrow down */
+}
+.proof[show="false"]:before {
+ content: "\25B6"; /* arrow right */
+}
+
+.proof[show="false"]:hover {
+ visibility: visible;
+ opacity: 0.5;
+}
+
+#toggle-proofs[proof-status="no-proofs"] {
+ display: none;
+}
+
+#toggle-proofs[proof-status="some-hidden"]:before {
+ content: "Show Proofs";
+}
+
+#toggle-proofs[proof-status="all-shown"]:before {
+ content: "Hide Proofs";
+}
+
+
+/* page layout */
+
+html, body {
+ height: 100%;
+ margin:0;
+ padding:0;
+}
+
+@media only screen { /* no div with internal scrolling to allow printing of whole content */
+ body {
+ display: flex;
+ flex-direction: column
+ }
+
+ #content {
+ flex: 1;
+ overflow: auto;
+ display: flex;
+ flex-direction: column;
+ }
+}
+
+#content:focus {
+ outline: none; /* prevent glow in OS X */
+}
+
+#main {
+ display: block;
+ padding: 16px;
+ padding-top: 1em;
+ padding-bottom: 2em;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 60em;
+ flex: 1 0 auto;
+}
+
+.libtitle {
+ display: none;
+}
+
+/* header */
+#header {
+ width:100%;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ align-items: center;
+ background-color: rgb(21,57,105);
+ color: white;
+ font-weight: bold;
+ overflow: hidden;
+}
+
+
+.button {
+ cursor: pointer;
+}
+
+#header * {
+ text-decoration: none;
+ vertical-align: middle;
+ margin-left: 15px;
+ margin-right: 15px;
+}
+
+#header > .right, #header > .left {
+ display: flex;
+ flex: 1;
+ align-items: center;
+}
+#header > .left {
+ text-align: left;
+}
+#header > .right {
+ flex-direction: row-reverse;
+}
+
+#header a, #header .button {
+ color: white;
+ box-sizing: border-box;
+}
+
+#header a {
+ border-radius: 0;
+ padding: 0.2em;
+}
+
+#header .button {
+ background-color: rgb(63, 103, 156);
+ border-radius: 1em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ margin: 0.2em;
+}
+
+#header a:hover, #header .button:hover {
+ background-color: rgb(181, 213, 255);
+ color: black;
+}
+
+#header h1 { padding: 0;
+ margin: 0;}
+
+/* footer */
+#footer {
+ text-align: center;
+ opacity: 0.5;
+ font-size: 75%;
+}
+
+/* hyperlinks */
+
+@keyframes highlight {
+ 50%{
+ background-color: black;
+ }
+}
+
+:target * {
+ animation-name: highlight;
+ animation-duration: 1s;
+}
+
+a[name]:empty {
+ float: right;
+}
+
+/* Proviola */
+
+div.code {
+ width: auto;
+ float: none;
+}
+
+div.goal {
+ position: fixed;
+ left: 75%;
+ width: 25%;
+ top: 3em;
+}
+
+div.doc {
+ clear: both;
+}
+
+span.command:hover {
+ background-color: inherit;
+}
diff --git a/docs/coqdoc/coqdocjs.js b/docs/coqdoc/coqdocjs.js
new file mode 100644
index 0000000..727da8c
--- /dev/null
+++ b/docs/coqdoc/coqdocjs.js
@@ -0,0 +1,197 @@
+var coqdocjs = coqdocjs || {};
+(function(){
+
+function replace(s){
+ var m;
+ if (m = s.match(/^(.+)'/)) {
+ return replace(m[1])+"'";
+ } else if (m = s.match(/^([A-Za-z]+)_?(\d+)$/)) {
+ return replace(m[1])+m[2].replace(/\d/g, function(d){
+ if (coqdocjs.subscr.hasOwnProperty(d)) {
+ return coqdocjs.subscr[d];
+ } else {
+ return d;
+ }
+ });
+ } else if (coqdocjs.repl.hasOwnProperty(s)){
+ return coqdocjs.repl[s]
+ } else {
+ return s;
+ }
+}
+
+function toArray(nl){
+ return Array.prototype.slice.call(nl);
+}
+
+function replInTextNodes() {
+ // Get all the nodes up front.
+ var nodes = Array.from(document.querySelectorAll(".code, .inlinecode"))
+ .flatMap(elem => Array.from(elem.childNodes)
+ .filter(e => e.nodeType == Node.TEXT_NODE)
+ );
+
+ // Create a replacement template node to clone from.
+ var replacementTemplate = document.createElement("span");
+ replacementTemplate.setAttribute("class", "id");
+ replacementTemplate.setAttribute("type", "keyword");
+
+ // Do the replacements.
+ coqdocjs.replInText.forEach(function(toReplace){
+ var replacement = replacementTemplate.cloneNode(true);
+ replacement.appendChild(document.createTextNode(toReplace));
+
+ nodes.forEach(node => {
+ var fragments = node.textContent.split(toReplace);
+ node.textContent = fragments[fragments.length-1];
+ for (var k = 0; k < fragments.length - 1; ++k) {
+ fragments[k] && node.parentNode.insertBefore(document.createTextNode(fragments[k]),node);
+ node.parentNode.insertBefore(replacement.cloneNode(true), node);
+ }
+ });
+ });
+}
+
+function replNodes() {
+ toArray(document.getElementsByClassName("id")).forEach(function(node){
+ if (["var", "variable", "keyword", "notation", "definition", "inductive"].indexOf(node.getAttribute("type"))>=0){
+ var text = node.textContent;
+ var replText = replace(text);
+ if(text != replText) {
+ node.setAttribute("repl", replText);
+ node.setAttribute("title", text);
+ var hidden = document.createElement("span");
+ hidden.setAttribute("class", "hidden");
+ while (node.firstChild) {
+ hidden.appendChild(node.firstChild);
+ }
+ node.appendChild(hidden);
+ }
+ }
+ });
+}
+
+function isVernacStart(l, t){
+ t = t.trim();
+ for(var s of l){
+ if (t == s || t.startsWith(s+" ") || t.startsWith(s+".")){
+ return true;
+ }
+ }
+ return false;
+}
+
+function isProofStart(n){
+ return isVernacStart(["Proof"], n.textContent) ||
+ (isVernacStart(["Next"], n.textContent) && isVernacStart(["Obligation"], n.nextSibling.nextSibling.textContent));
+}
+
+function isProofEnd(s){
+ return isVernacStart(["Qed", "Admitted", "Defined", "Abort"], s);
+}
+
+function proofStatus(){
+ var proofs = toArray(document.getElementsByClassName("proof"));
+ if(proofs.length) {
+ for(var proof of proofs) {
+ if (proof.getAttribute("show") === "false") {
+ return "some-hidden";
+ }
+ }
+ return "all-shown";
+ }
+ else {
+ return "no-proofs";
+ }
+}
+
+function updateView(){
+ document.getElementById("toggle-proofs").setAttribute("proof-status", proofStatus());
+}
+
+function foldProofs() {
+ var hasCommands = true;
+ var nodes = document.getElementsByClassName("command");
+ if(nodes.length == 0) {
+ hasCommands = false;
+ console.log("no command tags found")
+ nodes = document.getElementsByClassName("id");
+ }
+ toArray(nodes).forEach(function(node){
+ if(isProofStart(node)) {
+ var proof = document.createElement("span");
+ proof.setAttribute("class", "proof");
+
+ node.parentNode.insertBefore(proof, node);
+ if(proof.previousSibling.nodeType === Node.TEXT_NODE)
+ proof.appendChild(proof.previousSibling);
+ while(node && !isProofEnd(node.textContent)) {
+ proof.appendChild(node);
+ node = proof.nextSibling;
+ }
+ if (proof.nextSibling) proof.appendChild(proof.nextSibling); // the Qed
+ if (!hasCommands && proof.nextSibling) proof.appendChild(proof.nextSibling); // the dot after the Qed
+
+ proof.addEventListener("click", function(proof){return function(e){
+ if (e.target.parentNode.tagName.toLowerCase() === "a")
+ return;
+ proof.setAttribute("show", proof.getAttribute("show") === "true" ? "false" : "true");
+ proof.setAttribute("animate", "");
+ updateView();
+ };}(proof));
+ proof.setAttribute("show", "false");
+ }
+ });
+}
+
+function toggleProofs(){
+ var someProofsHidden = proofStatus() === "some-hidden";
+ toArray(document.getElementsByClassName("proof")).forEach(function(proof){
+ proof.setAttribute("show", someProofsHidden);
+ proof.setAttribute("animate", "");
+ });
+ updateView();
+}
+
+function repairDom(){
+ // pull whitespace out of command
+ toArray(document.getElementsByClassName("command")).forEach(function(node){
+ while(node.firstChild && node.firstChild.textContent.trim() == ""){
+ console.log("try move");
+ node.parentNode.insertBefore(node.firstChild, node);
+ }
+ });
+ toArray(document.getElementsByClassName("id")).forEach(function(node){
+ node.setAttribute("type", node.getAttribute("title"));
+ });
+ toArray(document.getElementsByClassName("idref")).forEach(function(ref){
+ toArray(ref.childNodes).forEach(function(child){
+ if (["var", "variable"].indexOf(child.getAttribute("type")) > -1)
+ ref.removeAttribute("href");
+ });
+ });
+
+}
+
+function fixTitle(){
+ var url = "/" + window.location.pathname;
+ var basename = url.substring(url.lastIndexOf('/')+1, url.lastIndexOf('.'));
+ if (basename === "toc") {document.title = "Table of Contents";}
+ else if (basename === "indexpage") {document.title = "Index";}
+ else {document.title = basename;}
+}
+
+function postprocess(){
+ repairDom();
+ replInTextNodes()
+ replNodes();
+ foldProofs();
+ document.getElementById("toggle-proofs").addEventListener("click", toggleProofs);
+ updateView();
+}
+
+fixTitle();
+document.addEventListener('DOMContentLoaded', postprocess);
+
+coqdocjs.toggleProofs = toggleProofs;
+})();
diff --git a/docs/coqdoc/indexpage.html b/docs/coqdoc/indexpage.html
new file mode 100644
index 0000000..633aa85
--- /dev/null
+++ b/docs/coqdoc/indexpage.html
@@ -0,0 +1,845 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Global Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(85 entries) |
+
+
+Module Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(1 entry) |
+
+
+Variable Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(7 entries) |
+
+
+Library Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(2 entries) |
+
+
+Constructor Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(19 entries) |
+
+
+Lemma Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(6 entries) |
+
+
+Inductive Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(9 entries) |
+
+
+Section Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(1 entry) |
+
+
+Definition Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(40 entries) |
+
+
+
+
Global Index
+
A
+
abs_functional_metatheory [library]
+
abs_defs [library]
+
B
+
b [definition, in
ABS.abs_defs]
+
C
+
ctxv [inductive, in
ABS.abs_defs]
+
ctxv_sind [definition, in
ABS.abs_defs]
+
ctxv_rec [definition, in
ABS.abs_defs]
+
ctxv_ind [definition, in
ABS.abs_defs]
+
ctxv_rect [definition, in
ABS.abs_defs]
+
ctxv_sig [constructor, in
ABS.abs_defs]
+
ctxv_T [constructor, in
ABS.abs_defs]
+
E
+
e [inductive, in
ABS.abs_defs]
+
eq_z [lemma, in
ABS.abs_defs]
+
eq_b [lemma, in
ABS.abs_defs]
+
eq_x [lemma, in
ABS.abs_defs]
+
eq_fn [lemma, in
ABS.abs_defs]
+
eq_i [lemma, in
ABS.abs_defs]
+
e_ott_ind [definition, in
ABS.abs_defs]
+
e_rect.H_list_e_cons [variable, in
ABS.abs_defs]
+
e_rect.H_list_e_nil [variable, in
ABS.abs_defs]
+
e_rect.H_e_fn_call [variable, in
ABS.abs_defs]
+
e_rect.H_e_var [variable, in
ABS.abs_defs]
+
e_rect.H_e_t [variable, in
ABS.abs_defs]
+
e_rect.P_list_e [variable, in
ABS.abs_defs]
+
e_rect.P_e [variable, in
ABS.abs_defs]
+
e_rect [section, in
ABS.abs_defs]
+
e_sind [definition, in
ABS.abs_defs]
+
e_rec [definition, in
ABS.abs_defs]
+
e_ind [definition, in
ABS.abs_defs]
+
e_rect [definition, in
ABS.abs_defs]
+
e_fn_call [constructor, in
ABS.abs_defs]
+
e_var [constructor, in
ABS.abs_defs]
+
e_t [constructor, in
ABS.abs_defs]
+
F
+
F [inductive, in
ABS.abs_defs]
+
fn [definition, in
ABS.abs_defs]
+
F_sind [definition, in
ABS.abs_defs]
+
F_rec [definition, in
ABS.abs_defs]
+
F_ind [definition, in
ABS.abs_defs]
+
F_rect [definition, in
ABS.abs_defs]
+
F_fn [constructor, in
ABS.abs_defs]
+
G
+
G [definition, in
ABS.abs_defs]
+
G_vdash_s [definition, in
ABS.abs_functional_metatheory]
+
I
+
i [definition, in
ABS.abs_defs]
+
M
+
Map [module, in
ABS.abs_defs]
+
R
+
red_e_sind [definition, in
ABS.abs_defs]
+
red_e_ind [definition, in
ABS.abs_defs]
+
red_fun_ground [constructor, in
ABS.abs_defs]
+
red_fun_exp [constructor, in
ABS.abs_defs]
+
red_var [constructor, in
ABS.abs_defs]
+
red_e [inductive, in
ABS.abs_defs]
+
S
+
s [definition, in
ABS.abs_defs]
+
sig [inductive, in
ABS.abs_defs]
+
sig_sind [definition, in
ABS.abs_defs]
+
sig_rec [definition, in
ABS.abs_defs]
+
sig_ind [definition, in
ABS.abs_defs]
+
sig_rect [definition, in
ABS.abs_defs]
+
sig_sig [constructor, in
ABS.abs_defs]
+
subG [definition, in
ABS.abs_functional_metatheory]
+
T
+
t [inductive, in
ABS.abs_defs]
+
T [inductive, in
ABS.abs_defs]
+
type_preservation [lemma, in
ABS.abs_functional_metatheory]
+
typ_F_sind [definition, in
ABS.abs_defs]
+
typ_F_ind [definition, in
ABS.abs_defs]
+
typ_e_sind [definition, in
ABS.abs_defs]
+
typ_e_ind [definition, in
ABS.abs_defs]
+
typ_func_decl [constructor, in
ABS.abs_defs]
+
typ_F [inductive, in
ABS.abs_defs]
+
typ_func_expr [constructor, in
ABS.abs_defs]
+
typ_var [constructor, in
ABS.abs_defs]
+
typ_int [constructor, in
ABS.abs_defs]
+
typ_bool [constructor, in
ABS.abs_defs]
+
typ_e [inductive, in
ABS.abs_defs]
+
t_sind [definition, in
ABS.abs_defs]
+
t_rec [definition, in
ABS.abs_defs]
+
t_ind [definition, in
ABS.abs_defs]
+
t_rect [definition, in
ABS.abs_defs]
+
t_int [constructor, in
ABS.abs_defs]
+
t_b [constructor, in
ABS.abs_defs]
+
T_sind [definition, in
ABS.abs_defs]
+
T_rec [definition, in
ABS.abs_defs]
+
T_ind [definition, in
ABS.abs_defs]
+
T_rect [definition, in
ABS.abs_defs]
+
T_int [constructor, in
ABS.abs_defs]
+
T_bool [constructor, in
ABS.abs_defs]
+
X
+
x [definition, in
ABS.abs_defs]
+
Z
+
z [definition, in
ABS.abs_defs]
+
+
Module Index
+
M
+
Map [in
ABS.abs_defs]
+
+
Variable Index
+
E
+
e_rect.H_list_e_cons [in
ABS.abs_defs]
+
e_rect.H_list_e_nil [in
ABS.abs_defs]
+
e_rect.H_e_fn_call [in
ABS.abs_defs]
+
e_rect.H_e_var [in
ABS.abs_defs]
+
e_rect.H_e_t [in
ABS.abs_defs]
+
e_rect.P_list_e [in
ABS.abs_defs]
+
e_rect.P_e [in
ABS.abs_defs]
+
+
Library Index
+
A
+
abs_functional_metatheory
+
abs_defs
+
+
Constructor Index
+
C
+
ctxv_sig [in
ABS.abs_defs]
+
ctxv_T [in
ABS.abs_defs]
+
E
+
e_fn_call [in
ABS.abs_defs]
+
e_var [in
ABS.abs_defs]
+
e_t [in
ABS.abs_defs]
+
F
+
F_fn [in
ABS.abs_defs]
+
R
+
red_fun_ground [in
ABS.abs_defs]
+
red_fun_exp [in
ABS.abs_defs]
+
red_var [in
ABS.abs_defs]
+
S
+
sig_sig [in
ABS.abs_defs]
+
T
+
typ_func_decl [in
ABS.abs_defs]
+
typ_func_expr [in
ABS.abs_defs]
+
typ_var [in
ABS.abs_defs]
+
typ_int [in
ABS.abs_defs]
+
typ_bool [in
ABS.abs_defs]
+
t_int [in
ABS.abs_defs]
+
t_b [in
ABS.abs_defs]
+
T_int [in
ABS.abs_defs]
+
T_bool [in
ABS.abs_defs]
+
+
Lemma Index
+
E
+
eq_z [in
ABS.abs_defs]
+
eq_b [in
ABS.abs_defs]
+
eq_x [in
ABS.abs_defs]
+
eq_fn [in
ABS.abs_defs]
+
eq_i [in
ABS.abs_defs]
+
T
+
type_preservation [in
ABS.abs_functional_metatheory]
+
+
Inductive Index
+
C
+
ctxv [in
ABS.abs_defs]
+
E
+
e [in
ABS.abs_defs]
+
F
+
F [in
ABS.abs_defs]
+
R
+
red_e [in
ABS.abs_defs]
+
S
+
sig [in
ABS.abs_defs]
+
T
+
t [in
ABS.abs_defs]
+
T [in
ABS.abs_defs]
+
typ_F [in
ABS.abs_defs]
+
typ_e [in
ABS.abs_defs]
+
+
Section Index
+
E
+
e_rect [in
ABS.abs_defs]
+
+
Definition Index
+
B
+
b [in
ABS.abs_defs]
+
C
+
ctxv_sind [in
ABS.abs_defs]
+
ctxv_rec [in
ABS.abs_defs]
+
ctxv_ind [in
ABS.abs_defs]
+
ctxv_rect [in
ABS.abs_defs]
+
E
+
e_ott_ind [in
ABS.abs_defs]
+
e_sind [in
ABS.abs_defs]
+
e_rec [in
ABS.abs_defs]
+
e_ind [in
ABS.abs_defs]
+
e_rect [in
ABS.abs_defs]
+
F
+
fn [in
ABS.abs_defs]
+
F_sind [in
ABS.abs_defs]
+
F_rec [in
ABS.abs_defs]
+
F_ind [in
ABS.abs_defs]
+
F_rect [in
ABS.abs_defs]
+
G
+
G [in
ABS.abs_defs]
+
G_vdash_s [in
ABS.abs_functional_metatheory]
+
I
+
i [in
ABS.abs_defs]
+
R
+
red_e_sind [in
ABS.abs_defs]
+
red_e_ind [in
ABS.abs_defs]
+
S
+
s [in
ABS.abs_defs]
+
sig_sind [in
ABS.abs_defs]
+
sig_rec [in
ABS.abs_defs]
+
sig_ind [in
ABS.abs_defs]
+
sig_rect [in
ABS.abs_defs]
+
subG [in
ABS.abs_functional_metatheory]
+
T
+
typ_F_sind [in
ABS.abs_defs]
+
typ_F_ind [in
ABS.abs_defs]
+
typ_e_sind [in
ABS.abs_defs]
+
typ_e_ind [in
ABS.abs_defs]
+
t_sind [in
ABS.abs_defs]
+
t_rec [in
ABS.abs_defs]
+
t_ind [in
ABS.abs_defs]
+
t_rect [in
ABS.abs_defs]
+
T_sind [in
ABS.abs_defs]
+
T_rec [in
ABS.abs_defs]
+
T_ind [in
ABS.abs_defs]
+
T_rect [in
ABS.abs_defs]
+
X
+
x [in
ABS.abs_defs]
+
Z
+
z [in
ABS.abs_defs]
+
+
+Global Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(85 entries) |
+
+
+Module Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(1 entry) |
+
+
+Variable Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(7 entries) |
+
+
+Library Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(2 entries) |
+
+
+Constructor Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(19 entries) |
+
+
+Lemma Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(6 entries) |
+
+
+Inductive Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(9 entries) |
+
+
+Section Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(1 entry) |
+
+
+Definition Index |
+A |
+B |
+C |
+D |
+E |
+F |
+G |
+H |
+I |
+J |
+K |
+L |
+M |
+N |
+O |
+P |
+Q |
+R |
+S |
+T |
+U |
+V |
+W |
+X |
+Y |
+Z |
+_ |
+other |
+(40 entries) |
+
+
+
+
+
+
+
+
diff --git a/docs/coqdoc/toc.html b/docs/coqdoc/toc.html
new file mode 100644
index 0000000..661843d
--- /dev/null
+++ b/docs/coqdoc/toc.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/report/main.pdf b/docs/report/main.pdf
new file mode 100644
index 0000000..54568d7
Binary files /dev/null and b/docs/report/main.pdf differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..ea08b09
--- /dev/null
+++ b/index.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ ABS Metatheory
+
+
+
+
+
+
+
+
+
+
+About
+Welcome to the ABS Metatheory project website!
+Formal metatheory in Coq for the ABS language.
+Documentation
+
+
+
+
+