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 @@ + + + + + + + + + + + + + +
+
+
+(* generated by Ott 0.33 from: src/abs.ott *)
+ +
+Require Import Arith.
+Require Import Bool.
+Require Import List.
+Require Import Ott.ott_list_core.
+ +
+Require Export Ascii.
+Require Export String.
+Require Export ZArith.
+ +
+Require Import FMapList OrderedTypeEx.
+Module Map <: FMapInterface.S := FMapList.Make String_as_OT.
+ +
+#[export] Hint Resolve bool_dec : ott_coq_equality.
+#[export] Hint Resolve ascii_dec : ott_coq_equality.
+#[export] Hint Resolve Pos.eq_dec : ott_coq_equality.
+ +
+
+ +
+

ABS Definitions

+ +
+
+ +
+Definition i : Set := nat. (*r index variables (subscripts) *)
+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. (*r function name *)
+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. (*r variable *)
+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. (*r boolean *)
+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. (*r integer *)
+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 := (*r ground type *)
+ | T_bool : T
+ | T_int : T.
+ +
+Inductive t : Set := (*r ground term *)
+ | t_b (b5:b) (*r boolean *)
+ | t_int (z5:z) (*r integer *).
+ +
+Inductive sig : Set :=
+ | sig_sig (_:list T) (T_5:T).
+ +
+Inductive e : Set := (*r expression *)
+ | e_t (t5:t) (*r term *)
+ | e_var (x5:x) (*r variable *)
+ | e_fn_call (fn5:fn) (_:list e) (*r function call *).
+ +
+Inductive ctxv : Set :=
+ | ctxv_T (T5:T)
+ | ctxv_sig (sig5:sig).
+ +
+Inductive F : Set := (*r function definition *)
+ | 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 +
+
+Section e_rect.
+ +
+Variables
+  (P_e : e -> Prop)
+  (P_list_e : list e -> Prop).
+ +
+Hypothesis
+  (H_e_t : forall (t5:t), P_e (e_t t5))
+  (H_e_var : forall (x5:x), P_e (e_var x5))
+  (H_e_fn_call : forall (e_list:list e), P_list_e e_list -> forall (fn5:fn), P_e (e_fn_call fn5 e_list))
+  (H_list_e_nil : P_list_e nil)
+  (H_list_e_cons : forall (e0:e), P_e e0 -> forall (e_l:list e), P_list_e e_l -> P_list_e (cons e0 e_l)).
+ +
+Fixpoint e_ott_ind (n:e) : P_e n :=
+  match n as x return P_e x with
+  | (e_t t5) => H_e_t t5
+  | (e_var x5) => H_e_var x5
+  | (e_fn_call fn5 e_list) => H_e_fn_call e_list (((fix e_list_ott_ind (e_l:list e) : P_list_e e_l := match e_l as x return P_list_e x with nil => H_list_e_nil | cons e1 xl => H_list_e_cons e1(e_ott_ind e1)xl (e_list_ott_ind xl) end)) e_list) fn5
+end.
+ +
+End e_rect.
+
+ +
+definitions +
+
+ +
+(* defns functional_well_typing *)
+Inductive typ_e : G -> e -> T -> Prop := (* defn e *)
+ | 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 := (* defn F *)
+ | 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 +
+
+ +
+(* defns functional_evaluation *)
+Inductive red_e : list F -> s -> e -> s -> e -> Prop := (* defn e *)
+ | 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 @@ + + + + + + + + + + + + + +
+
+
+From ABS Require Import abs_defs.
+From Coq Require Import List.
+Import ListNotations.
+ +
+
+ +
+

ABS Functional Metatheory

+ +
+
+ +
+Definition subG (G1 G2 : G) : Prop :=
+  forall (key : string) (elt : ctxv),
+    Map.find key G1 = Some elt ->
+    Map.find key G2 = Some elt.
+ +
+Definition G_vdash_s (G5 : G) (s5 : s) :=
forall (x5 : x) (t5 : t) (T5 : T),
+  Map.find x5 s5 = Some t5 ->
+  Map.find x5 G5 = Some (ctxv_T T5) ->
+  typ_e G5 (e_t t5) T5.
+ +
+Lemma type_preservation : forall (G5 : G) (s5 : s),
+  G_vdash_s G5 s5 ->
+  forall (Flist : list F) (e5 : e) (T5 : T) (s' : s) (e' : e),
+    typ_e G5 e5 T5 ->
+    red_e Flist s5 e5 s' e' ->
+    exists G', subG G5 G' /\ G_vdash_s G' s' /\ typ_e G' e' T5.
+Proof.
+Admitted.
+ +
+
+
+ +
+ + + 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 IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(85 entries)
Module IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Variable IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(7 entries)
Library IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(2 entries)
Constructor IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(19 entries)
Lemma IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(6 entries)
Inductive IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(9 entries)
Section IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Definition IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_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 IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(85 entries)
Module IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Variable IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(7 entries)
Library IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(2 entries)
Constructor IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(19 entries)
Lemma IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(6 entries)
Inductive IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(9 entries)
Section IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Definition IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_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 + + + + + + + + +
+

ABS Metatheory

+
+
+

View the project on GitHub

+
+

About

+

Welcome to the ABS Metatheory project website!

+

Formal metatheory in Coq for the ABS language.

+

Documentation

+ +

Help and contact

+ + +