From 00c6616399433c0e38315091d109932bb7343bf9 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 15 Jan 2024 15:39:00 +0000
Subject: [PATCH] Deploy to GitHub pages
---
.nojekyll | 0
docs/coqdoc/ABS.abs_defs.html | 422 +++++++
.../coqdoc/ABS.abs_functional_metatheory.html | 101 ++
docs/coqdoc/config.js | 79 ++
docs/coqdoc/coqdoc.css | 197 ++++
docs/coqdoc/coqdocjs.css | 239 ++++
docs/coqdoc/coqdocjs.js | 197 ++++
docs/coqdoc/indexpage.html | 1050 +++++++++++++++++
docs/coqdoc/toc.html | 45 +
docs/report/main.pdf | Bin 0 -> 71376 bytes
index.html | 42 +
11 files changed, 2372 insertions(+)
create mode 100644 .nojekyll
create mode 100644 docs/coqdoc/ABS.abs_defs.html
create mode 100644 docs/coqdoc/ABS.abs_functional_metatheory.html
create mode 100644 docs/coqdoc/config.js
create mode 100644 docs/coqdoc/coqdoc.css
create mode 100644 docs/coqdoc/coqdocjs.css
create mode 100644 docs/coqdoc/coqdocjs.js
create mode 100644 docs/coqdoc/indexpage.html
create mode 100644 docs/coqdoc/toc.html
create mode 100644 docs/report/main.pdf
create mode 100644 index.html
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..8690f45
--- /dev/null
+++ b/docs/coqdoc/ABS.abs_defs.html
@@ -0,0 +1,422 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+induction principles
+
+
+
Section T_rect.
+
+
+
Variables
+ (
P_T :
T -> Prop)
+ (
P_list_T :
list T -> Prop).
+
+
+
Hypothesis
+ (
H_T_basic_type :
forall (
B5:
B),
P_T (
T_basic_type B5))
+ (
H_T_d :
forall (
D5:
D),
P_T (
T_d D5))
+ (
H_T_d_param :
forall (
T_list:
list T),
P_list_T T_list -> forall (
D5:
D),
P_T (
T_d_param D5 T_list))
+ (
H_list_T_nil :
P_list_T nil)
+ (
H_list_T_cons :
forall (
T0:
T),
P_T T0 -> forall (
T_l:
list T),
P_list_T T_l -> P_list_T (
cons T0 T_l)).
+
+
+
Fixpoint T_ott_ind (
n:
T) :
P_T n :=
+
match n as x return P_T x with
+ | (
T_basic_type B5) =>
H_T_basic_type B5
+ | (
T_d D5) =>
H_T_d D5
+ | (
T_d_param D5 T_list) =>
H_T_d_param T_list (((
fix T_list_ott_ind (
T_l:
list T) :
P_list_T T_l :=
match T_l as x return P_list_T x with nil =>
H_list_T_nil |
cons T1 xl =>
H_list_T_cons T1(
T_ott_ind T1)
xl (
T_list_ott_ind xl)
end))
T_list)
D5
+
end.
+
+
+
End T_rect.
+
+
+
Section A_rect.
+
+
+
Variables
+ (
P_A :
A -> Prop)
+ (
P_list_A :
list A -> Prop).
+
+
+
Hypothesis
+ (
H_A_name :
forall (
N5:
N),
P_A (
A_name N5))
+ (
H_A_type :
forall (
T5:
T),
P_A (
A_type T5))
+ (
H_A_type_param :
forall (
A_list:
list A),
P_list_A A_list -> forall (
D5:
D),
P_A (
A_type_param D5 A_list))
+ (
H_list_A_nil :
P_list_A nil)
+ (
H_list_A_cons :
forall (
A0:
A),
P_A A0 -> forall (
A_l:
list A),
P_list_A A_l -> P_list_A (
cons A0 A_l)).
+
+
+
Fixpoint A_ott_ind (
n:
A) :
P_A n :=
+
match n as x return P_A x with
+ | (
A_name N5) =>
H_A_name N5
+ | (
A_type T5) =>
H_A_type T5
+ | (
A_type_param D5 A_list) =>
H_A_type_param A_list (((
fix A_list_ott_ind (
A_l:
list A) :
P_list_A A_l :=
match A_l as x return P_list_A x with nil =>
H_list_A_nil |
cons A1 xl =>
H_list_A_cons A1(
A_ott_ind A1)
xl (
A_list_ott_ind xl)
end))
A_list)
D5
+
end.
+
+
+
End A_rect.
+
+
+
Section e_rect.
+
+
+
Variables
+ (
P_e :
e -> Prop)
+ (
P_list_e :
list e -> Prop).
+
+
+
Hypothesis
+ (
H_e_b :
forall (
b5:
b),
P_e (
e_b b5))
+ (
H_e_var :
forall (
x5:
x),
P_e (
e_var x5))
+ (
H_e_term :
forall (
t5:
t),
P_e (
e_term t5))
+ (
H_e_co :
forall (
Co5:
Co),
P_e (
e_co Co5))
+ (
H_e_co_param :
forall (
e_list:
list e),
P_list_e e_list -> forall (
Co5:
Co),
P_e (
e_co_param Co5 e_list))
+ (
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_b b5) =>
H_e_b b5
+ | (
e_var x5) =>
H_e_var x5
+ | (
e_term t5) =>
H_e_term t5
+ | (
e_co Co5) =>
H_e_co Co5
+ | (
e_co_param Co5 e_list) =>
H_e_co_param 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)
Co5
+ | (
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 e2 xl =>
H_list_e_cons e2(
e_ott_ind e2)
xl (
e_list_ott_ind xl)
end))
e_list)
fn5
+
end.
+
+
+
End e_rect.
+
+
+
Section t_rect.
+
+
+
Variables
+ (
P_t :
t -> Prop)
+ (
P_list_t :
list t -> Prop).
+
+
+
Hypothesis
+ (
H_term_co :
forall (
Co5:
Co),
P_t (
term_co Co5))
+ (
H_term_co_param :
forall (
t_list:
list t),
P_list_t t_list -> forall (
Co5:
Co),
P_t (
term_co_param Co5 t_list))
+ (
H_term_null :
P_t term_null)
+ (
H_list_t_nil :
P_list_t nil)
+ (
H_list_t_cons :
forall (
t0:
t),
P_t t0 -> forall (
t_l:
list t),
P_list_t t_l -> P_list_t (
cons t0 t_l)).
+
+
+
Fixpoint t_ott_ind (
n:
t) :
P_t n :=
+
match n as x return P_t x with
+ | (
term_co Co5) =>
H_term_co Co5
+ | (
term_co_param Co5 t_list) =>
H_term_co_param t_list (((
fix t_list_ott_ind (
t_l:
list t) :
P_list_t t_l :=
match t_l as x return P_list_t x with nil =>
H_list_t_nil |
cons t1 xl =>
H_list_t_cons t1(
t_ott_ind t1)
xl (
t_list_ott_ind xl)
end))
t_list)
Co5
+ |
term_null =>
H_term_null
+
end.
+
+
+
End t_rect.
+
+
+
Fixpoint nsubst_A (
A5 :
A) (
nsubst5 :
nsubst) :
A :=
+
match A5 with
+|
A_name N5 as A' =>
+
match Map.find N5 nsubst5 with
+ |
Some A6 =>
A6
+ |
None =>
A'
+
end
+|
A_type T5 as A' =>
A'
+|
A_type_param D5 l =>
A_type_param D5 (
map (
fun A5 =>
nsubst_A A5 nsubst5)
l)
+
end.
+
+
+
Definition nsubst_A_list (
A_list :
list A) (
nsubst5 :
nsubst) :
list A :=
+
map (
fun A5 =>
nsubst_A A5 nsubst5)
A_list.
+
+
+
Fixpoint xsubst_e (
e5 :
e) (
xsubst5 :
xsubst) :
e :=
+
match e5 with
+|
e_b _ as e' =>
e'
+|
e_var x' as e' =>
+
match Map.find x' xsubst5 with
+ |
Some y5 =>
e_var y5
+ |
None =>
e'
+
end
+|
e_term _ as e' =>
e'
+|
e_co _ as e' =>
e'
+|
e_co_param Co5 l =>
e_co_param Co5 (
map (
fun e' =>
xsubst_e e' xsubst5)
l)
+|
e_fn_call fn5 l =>
e_fn_call fn5 (
map (
fun e' =>
xsubst_e e' xsubst5)
l)
+
end.
+
+
+
Fixpoint vars_e (
e5 :
e) :
list x :=
+
match e5 with
+|
e_b _ =>
nil
+|
e_var x' =>
x' :: nil
+|
e_term _ =>
nil
+|
e_co _ =>
nil
+|
e_co_param _ l =>
fold_right (
fun e' l' =>
vars_e e' ++ l')
nil l
+|
e_fn_call _ l =>
fold_right (
fun e' l' =>
vars_e e' ++ l')
nil l
+
end.
+
+
+
+
+
+definitions
+
+
+
+
+
+
Inductive t_e :
G -> e -> A -> Prop :=
+ |
t_bool :
forall (
G5:
G) (
b5:
b),
+
t_e G5 (
e_b b5) (
A_type (
T_basic_type B_bool))
+ |
t_null :
forall (
G5:
G) (
A5:
A),
+
t_e G5 (
e_term term_null)
A5
+ |
t_var :
forall (
G5:
G) (
x5:
x) (
A5:
A),
+
(Map.find x5 G5 = Some (
ctxv_A A5 )
) ->
+
t_e G5 (
e_var x5)
A5
+ |
t_func_expr :
forall (
e_A'_list:
list (
e*A)) (
A_list:
list A) (
G5:
G) (
fn5:
fn) (
A_5:
A) (
nsubst5:
nsubst),
+
(nsubst_A_list A_list nsubst5 = (map (
fun (
pat_:(
e*A)) =>
match pat_ with (e_,A'_) =>
A'_ end )
e_A'_list) ) ->
+
(forall e_ A'_,
In (e_,A'_) (
map (
fun (
pat_: (
e*A)) =>
match pat_ with (e_,A'_) =>
(e_,A'_) end)
e_A'_list)
-> (t_e G5 e_ A'_)) ->
+
(Map.find fn5 G5 = Some (
ctxv_sig (
sig_sig A_list A_5) )
) ->
+
t_e G5 (
e_fn_call fn5 (
map (
fun (
pat_:(
e*A)) =>
match pat_ with (e_,A'_) =>
e_ end )
e_A'_list)) (
nsubst_A A_5 nsubst5 )
+ |
t_cons_expr :
forall (
e_A'_list:
list (
e*A)) (
A_list:
list A) (
G5:
G) (
Co5:
Co) (
D5:
D) (
nsubst5:
nsubst),
+
(nsubst_A_list A_list nsubst5 = (map (
fun (
pat_:(
e*A)) =>
match pat_ with (e_,A'_) =>
A'_ end )
e_A'_list) ) ->
+
(forall e_ A'_,
In (e_,A'_) (
map (
fun (
pat_: (
e*A)) =>
match pat_ with (e_,A'_) =>
(e_,A'_) end)
e_A'_list)
-> (t_e G5 e_ A'_)) ->
+
(Map.find Co5 G5 = Some (
ctxv_sig (
sig_sig A_list (
A_type (
T_d D5))) )
) ->
+
t_e G5 (
e_co_param Co5 (
map (
fun (
pat_:(
e*A)) =>
match pat_ with (e_,A'_) =>
e_ end )
e_A'_list)) (
A_type (
T_d D5))
+ |
t_cons_expr_param :
forall (
e_A'_list:
list (
e*A)) (
A_list:
list A) (
N_list:
list N) (
G5:
G) (
Co5:
Co) (
D5:
D) (
nsubst5:
nsubst),
+
(nsubst_A_list A_list nsubst5 = (map (
fun (
pat_:(
e*A)) =>
match pat_ with (e_,A'_) =>
A'_ end )
e_A'_list) ) ->
+
(forall e_ A'_,
In (e_,A'_) (
map (
fun (
pat_: (
e*A)) =>
match pat_ with (e_,A'_) =>
(e_,A'_) end)
e_A'_list)
-> (t_e G5 e_ A'_)) ->
+
(Map.find Co5 G5 = Some (
ctxv_sig (
sig_sig A_list (
A_type_param D5 (
map (
fun (
N_:
N) => (
A_name N_))
N_list))) )
) ->
+
t_e G5 (
e_co_param Co5 (
map (
fun (
pat_:(
e*A)) =>
match pat_ with (e_,A'_) =>
e_ end )
e_A'_list)) (
nsubst_A (
A_type_param D5 (
map (
fun (
N_:
N) => (
A_name N_))
N_list))
nsubst5 )
+
with t_cons :
G -> Cons -> A -> Prop :=
+ |
t_cons_decl :
forall (
A_list:
list A) (
G5:
G) (
Co5:
Co) (
D5:
D),
+
(Map.find Co5 G5 = Some (
ctxv_sig (
sig_sig A_list (
A_type (
T_d D5))) )
) ->
+
t_cons G5 (
Cons_co_param Co5 A_list) (
A_type (
T_d D5))
+ |
t_cons_decl_param :
forall (
N_list:
list N) (
A_list:
list A) (
G5:
G) (
Co5:
Co) (
D5:
D),
+
(Map.find Co5 G5 = Some (
ctxv_sig (
sig_sig A_list (
A_type_param D5 (
map (
fun (
N_:
N) => (
A_name N_))
N_list))) )
) ->
+
t_cons G5 (
Cons_co_param Co5 A_list) (
A_type_param D5 (
map (
fun (
N_:
N) => (
A_name N_))
N_list))
+
with t_dd :
G -> Dd -> Prop :=
+ |
t_data_decl :
forall (
Cons_list:
list Cons) (
G5:
G) (
D5:
D),
+
(forall Cons_,
In (
Cons_) (
map (
fun (
Cons_ :
Cons) => (
Cons_))
Cons_list)
-> (t_cons G5 Cons_ (
A_type (
T_d D5))
)) ->
+
t_dd G5 (
Dd_consl D5 Cons_list)
+ |
t_data_decl_param :
forall (
Cons_list:
list Cons) (
N_list:
list N) (
G5:
G) (
D5:
D),
+
(forall Cons_,
In (
Cons_) (
map (
fun (
Cons_ :
Cons) => (
Cons_))
Cons_list)
-> (t_cons G5 Cons_ (
A_type_param D5 (
map (
fun (
N_:
N) => (
A_name N_))
N_list))
)) ->
+
t_dd G5 (
Dd_consl_param D5 N_list Cons_list)
+
with t_F :
G -> F -> Prop :=
+ |
t_func_decl :
forall (
A_x_list:
list (
A*x)) (
G5:
G) (
A_5:
A) (
fn5:
fn) (
e5:
e),
+
(Map.find fn5 G5 = Some (
ctxv_sig (
sig_sig (
map (
fun (
pat_:(
A*x)) =>
match pat_ with (A_,x_) =>
A_ end )
A_x_list)
A_5) )
) ->
+
t_e (
fold_right (
fun (
ax :
x * A) (
G5 :
G) =>
Map.add (
fst ax) (
ctxv_A (
snd ax))
G5)
G5 (
map (
fun (
pat_:(
A*x)) =>
match pat_ with (A_,x_) =>
(x_,A_) end )
A_x_list) )
e5 A_5 ->
+
t_F G5 (
F_fn A_5 fn5 A_x_list e5)
+ |
t_func_decl_param :
forall (
A_x_list:
list (
A*x)) (
N_list:
list N) (
G5:
G) (
A_5:
A) (
fn5:
fn) (
e5:
e),
+
(Map.find fn5 G5 = Some (
ctxv_sig (
sig_sig (
map (
fun (
pat_:(
A*x)) =>
match pat_ with (A_,x_) =>
A_ end )
A_x_list)
A_5) )
) ->
+
t_e (
fold_right (
fun (
ax :
x * A) (
G5 :
G) =>
Map.add (
fst ax) (
ctxv_A (
snd ax))
G5)
G5 (
map (
fun (
pat_:(
A*x)) =>
match pat_ with (A_,x_) =>
(x_,A_) end )
A_x_list) )
e5 A_5 ->
+
t_F G5 (
F_fn_param A_5 fn5 N_list A_x_list e5)
+
with t_tsubst :
G -> tsubst -> Prop :=
+ |
t_tsubst_wt :
forall (
G5:
G) (
tsubst5:
tsubst),
+
(forall (
x5 :
x) (
t5 :
t) (
A5 :
A),
Map.find x5 tsubst5 = Some t5 -> Map.find x5 G5 = Some (
ctxv_A A5)
-> t_e G5 (
e_term t5)
A5) ->
+
t_tsubst G5 tsubst5.
+
+
+
+definitions
+
+
+
+
+
+
Inductive red_tsubst_e :
list F -> tsubst -> e -> tsubst -> e -> Prop :=
+ |
red_var :
forall (
F_list:
list F) (
tsubst5:
tsubst) (
x5:
x) (
t5:
t),
+
(Map.find x5 tsubst5 = Some t5 ) ->
+
red_tsubst_e F_list tsubst5 (
e_var x5)
tsubst5 (
e_term t5)
+ |
red_cons :
forall (
e'_list e_list:
list e) (
F_list:
list F) (
tsubst5:
tsubst) (
Co5:
Co) (
e_5:
e) (
tsubst':
tsubst) (
e':
e),
+
red_tsubst_e F_list tsubst5 e_5 tsubst' e' ->
+
red_tsubst_e F_list tsubst5 (
e_co_param Co5 ((
app e_list (
app (
cons e_5 nil) (
app e'_list nil)))))
tsubst' (
e_co_param Co5 ((
app e_list (
app (
cons e' nil) (
app e'_list nil)))))
+ |
red_fun_exp :
forall (
e'_list e_list:
list e) (
F_list:
list F) (
tsubst5:
tsubst) (
fn5:
fn) (
e_5:
e) (
tsubst':
tsubst) (
e':
e),
+
red_tsubst_e F_list tsubst5 e_5 tsubst' e' ->
+
red_tsubst_e F_list tsubst5 (
e_fn_call fn5 ((
app e_list (
app (
cons e_5 nil) (
app e'_list nil)))))
tsubst' (
e_fn_call fn5 ((
app e_list (
app (
cons e' nil) (
app e'_list nil)))))
+ |
red_fun_ground :
forall (
A_x_t_y_list:
list (
A*x*t*x)) (
F'_list F_list:
list F) (
A_5:
A) (
fn5:
fn) (
e5:
e) (
tsubst5:
tsubst),
+
(forall y5,
In y5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
y_ end )
A_x_t_y_list)
-> ~ In y5 (
vars_e e5 )
) ->
+
red_tsubst_e ((
app F_list (
app (
cons (
F_fn A_5 fn5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
(A_,x_) end )
A_x_t_y_list)
e5)
nil) (
app F'_list nil))))
tsubst5 (
e_fn_call fn5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) => (
e_term t_)
end )
A_x_t_y_list)) (
fold_right (
fun (
xt :
x * t) (
tsubst5 :
tsubst) =>
Map.add (
fst xt) (
snd xt)
tsubst5)
tsubst5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
(y_,t_) end )
A_x_t_y_list) ) (
xsubst_e e5 (
fold_right (
fun (
xy :
x * x) (
xsubst5 :
xsubst) =>
Map.add (
fst xy) (
snd xy)
xsubst5) (
Map.empty x) (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
(x_,y_) end )
A_x_t_y_list) ) )
+ |
red_fun_ground_param :
forall (
A_x_t_y_list:
list (
A*x*t*x)) (
F'_list:
list F) (
F_N_list:
list (
F*N)) (
A_5:
A) (
fn5:
fn) (
e5:
e) (
tsubst5:
tsubst),
+
(forall y5,
In y5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
y_ end )
A_x_t_y_list)
-> ~ In y5 (
vars_e e5 )
) ->
+
red_tsubst_e ((
app (
map (
fun (
pat_:(
F*N)) =>
match pat_ with (F_,N_) =>
F_ end )
F_N_list) (
app (
cons (
F_fn_param A_5 fn5 (
map (
fun (
pat_:(
F*N)) =>
match pat_ with (F_,N_) =>
N_ end )
F_N_list) (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
(A_,x_) end )
A_x_t_y_list)
e5)
nil) (
app F'_list nil))))
tsubst5 (
e_fn_call fn5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) => (
e_term t_)
end )
A_x_t_y_list)) (
fold_right (
fun (
xt :
x * t) (
tsubst5 :
tsubst) =>
Map.add (
fst xt) (
snd xt)
tsubst5)
tsubst5 (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
(y_,t_) end )
A_x_t_y_list) ) (
xsubst_e e5 (
fold_right (
fun (
xy :
x * x) (
xsubst5 :
xsubst) =>
Map.add (
fst xy) (
snd xy)
xsubst5) (
Map.empty x) (
map (
fun (
pat_:(
A*x*t*x)) =>
match pat_ with (A_,x_,t_,y_) =>
(x_,y_) end )
A_x_t_y_list) ) ) .
+
+
+
+
+
+
+
+
+
diff --git a/docs/coqdoc/ABS.abs_functional_metatheory.html b/docs/coqdoc/ABS.abs_functional_metatheory.html
new file mode 100644
index 0000000..a112090
--- /dev/null
+++ b/docs/coqdoc/ABS.abs_functional_metatheory.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..538826e
--- /dev/null
+++ b/docs/coqdoc/indexpage.html
@@ -0,0 +1,1050 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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 |
+(180 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 |
+(31 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 |
+(44 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 |
+(10 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 |
+(16 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 |
+(4 entries) |
+
+
+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 |
+(72 entries) |
+
+
+
+
Global Index
+
A
+
A [inductive, in
ABS.abs_defs]
+
abs_functional_metatheory [library]
+
abs_defs [library]
+
A_ott_ind [definition, in
ABS.abs_defs]
+
A_rect.H_list_A_cons [variable, in
ABS.abs_defs]
+
A_rect.H_list_A_nil [variable, in
ABS.abs_defs]
+
A_rect.H_A_type_param [variable, in
ABS.abs_defs]
+
A_rect.H_A_type [variable, in
ABS.abs_defs]
+
A_rect.H_A_name [variable, in
ABS.abs_defs]
+
A_rect.P_list_A [variable, in
ABS.abs_defs]
+
A_rect.P_A [variable, in
ABS.abs_defs]
+
A_rect [section, in
ABS.abs_defs]
+
A_sind [definition, in
ABS.abs_defs]
+
A_rec [definition, in
ABS.abs_defs]
+
A_ind [definition, in
ABS.abs_defs]
+
A_rect [definition, in
ABS.abs_defs]
+
A_type_param [constructor, in
ABS.abs_defs]
+
A_type [constructor, in
ABS.abs_defs]
+
A_name [constructor, in
ABS.abs_defs]
+
B
+
b [definition, in
ABS.abs_defs]
+
B [inductive, in
ABS.abs_defs]
+
B_sind [definition, in
ABS.abs_defs]
+
B_rec [definition, in
ABS.abs_defs]
+
B_ind [definition, in
ABS.abs_defs]
+
B_rect [definition, in
ABS.abs_defs]
+
B_int [constructor, in
ABS.abs_defs]
+
B_bool [constructor, in
ABS.abs_defs]
+
C
+
Co [definition, in
ABS.abs_defs]
+
Cons [inductive, in
ABS.abs_defs]
+
Cons_sind [definition, in
ABS.abs_defs]
+
Cons_rec [definition, in
ABS.abs_defs]
+
Cons_ind [definition, in
ABS.abs_defs]
+
Cons_rect [definition, in
ABS.abs_defs]
+
Cons_co_param [constructor, in
ABS.abs_defs]
+
Cons_co [constructor, in
ABS.abs_defs]
+
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_A [constructor, in
ABS.abs_defs]
+
D
+
D [definition, in
ABS.abs_defs]
+
Dd [inductive, in
ABS.abs_defs]
+
Dd_sind [definition, in
ABS.abs_defs]
+
Dd_rec [definition, in
ABS.abs_defs]
+
Dd_ind [definition, in
ABS.abs_defs]
+
Dd_rect [definition, in
ABS.abs_defs]
+
Dd_consl_param [constructor, in
ABS.abs_defs]
+
Dd_consl [constructor, in
ABS.abs_defs]
+
E
+
e [inductive, in
ABS.abs_defs]
+
eq_x [lemma, in
ABS.abs_defs]
+
eq_fn [lemma, in
ABS.abs_defs]
+
eq_Co [lemma, in
ABS.abs_defs]
+
eq_D [lemma, in
ABS.abs_defs]
+
eq_N [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_co_param [variable, in
ABS.abs_defs]
+
e_rect.H_e_co [variable, in
ABS.abs_defs]
+
e_rect.H_e_term [variable, in
ABS.abs_defs]
+
e_rect.H_e_var [variable, in
ABS.abs_defs]
+
e_rect.H_e_b [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_co_param [constructor, in
ABS.abs_defs]
+
e_co [constructor, in
ABS.abs_defs]
+
e_term [constructor, in
ABS.abs_defs]
+
e_var [constructor, in
ABS.abs_defs]
+
e_b [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_param [constructor, in
ABS.abs_defs]
+
F_fn [constructor, in
ABS.abs_defs]
+
G
+
G [definition, in
ABS.abs_defs]
+
I
+
i [definition, in
ABS.abs_defs]
+
M
+
Map [module, in
ABS.abs_defs]
+
N
+
N [definition, in
ABS.abs_defs]
+
nsubst [definition, in
ABS.abs_defs]
+
nsubst_A_list [definition, in
ABS.abs_defs]
+
nsubst_A [definition, in
ABS.abs_defs]
+
R
+
red_tsubst_e_sind [definition, in
ABS.abs_defs]
+
red_tsubst_e_ind [definition, in
ABS.abs_defs]
+
red_fun_ground_param [constructor, in
ABS.abs_defs]
+
red_fun_ground [constructor, in
ABS.abs_defs]
+
red_fun_exp [constructor, in
ABS.abs_defs]
+
red_cons [constructor, in
ABS.abs_defs]
+
red_var [constructor, in
ABS.abs_defs]
+
red_tsubst_e [inductive, in
ABS.abs_defs]
+
S
+
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]
+
term_null [constructor, in
ABS.abs_defs]
+
term_co_param [constructor, in
ABS.abs_defs]
+
term_co [constructor, in
ABS.abs_defs]
+
tsubst [definition, in
ABS.abs_defs]
+
type_preservation [lemma, in
ABS.abs_functional_metatheory]
+
type_preservation_cons_aux [lemma, in
ABS.abs_functional_metatheory]
+
type_preservation_var [lemma, in
ABS.abs_functional_metatheory]
+
type_preservation_var_aux [lemma, in
ABS.abs_functional_metatheory]
+
t_tsubst_sind [definition, in
ABS.abs_defs]
+
t_tsubst_ind [definition, in
ABS.abs_defs]
+
t_F_sind [definition, in
ABS.abs_defs]
+
t_F_ind [definition, in
ABS.abs_defs]
+
t_dd_sind [definition, in
ABS.abs_defs]
+
t_dd_ind [definition, in
ABS.abs_defs]
+
t_cons_sind [definition, in
ABS.abs_defs]
+
t_cons_ind [definition, in
ABS.abs_defs]
+
t_e_sind [definition, in
ABS.abs_defs]
+
t_e_ind [definition, in
ABS.abs_defs]
+
t_tsubst_wt [constructor, in
ABS.abs_defs]
+
t_tsubst [inductive, in
ABS.abs_defs]
+
t_func_decl_param [constructor, in
ABS.abs_defs]
+
t_func_decl [constructor, in
ABS.abs_defs]
+
t_F [inductive, in
ABS.abs_defs]
+
t_data_decl_param [constructor, in
ABS.abs_defs]
+
t_data_decl [constructor, in
ABS.abs_defs]
+
t_dd [inductive, in
ABS.abs_defs]
+
t_cons_decl_param [constructor, in
ABS.abs_defs]
+
t_cons_decl [constructor, in
ABS.abs_defs]
+
t_cons [inductive, in
ABS.abs_defs]
+
t_cons_expr_param [constructor, in
ABS.abs_defs]
+
t_cons_expr [constructor, in
ABS.abs_defs]
+
t_func_expr [constructor, in
ABS.abs_defs]
+
t_var [constructor, in
ABS.abs_defs]
+
t_null [constructor, in
ABS.abs_defs]
+
t_bool [constructor, in
ABS.abs_defs]
+
t_e [inductive, in
ABS.abs_defs]
+
t_ott_ind [definition, in
ABS.abs_defs]
+
t_rect.H_list_t_cons [variable, in
ABS.abs_defs]
+
t_rect.H_list_t_nil [variable, in
ABS.abs_defs]
+
t_rect.H_term_null [variable, in
ABS.abs_defs]
+
t_rect.H_term_co_param [variable, in
ABS.abs_defs]
+
t_rect.H_term_co [variable, in
ABS.abs_defs]
+
t_rect.P_list_t [variable, in
ABS.abs_defs]
+
t_rect.P_t [variable, in
ABS.abs_defs]
+
t_rect [section, in
ABS.abs_defs]
+
T_ott_ind [definition, in
ABS.abs_defs]
+
T_rect.H_list_T_cons [variable, in
ABS.abs_defs]
+
T_rect.H_list_T_nil [variable, in
ABS.abs_defs]
+
T_rect.H_T_d_param [variable, in
ABS.abs_defs]
+
T_rect.H_T_d [variable, in
ABS.abs_defs]
+
T_rect.H_T_basic_type [variable, in
ABS.abs_defs]
+
T_rect.P_list_T [variable, in
ABS.abs_defs]
+
T_rect.P_T [variable, in
ABS.abs_defs]
+
T_rect [section, 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_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_d_param [constructor, in
ABS.abs_defs]
+
T_d [constructor, in
ABS.abs_defs]
+
T_basic_type [constructor, in
ABS.abs_defs]
+
V
+
vars_e [definition, in
ABS.abs_defs]
+
X
+
x [definition, in
ABS.abs_defs]
+
xsubst [definition, in
ABS.abs_defs]
+
xsubst_e [definition, in
ABS.abs_defs]
+
+
Module Index
+
M
+
Map [in
ABS.abs_defs]
+
+
Variable Index
+
A
+
A_rect.H_list_A_cons [in
ABS.abs_defs]
+
A_rect.H_list_A_nil [in
ABS.abs_defs]
+
A_rect.H_A_type_param [in
ABS.abs_defs]
+
A_rect.H_A_type [in
ABS.abs_defs]
+
A_rect.H_A_name [in
ABS.abs_defs]
+
A_rect.P_list_A [in
ABS.abs_defs]
+
A_rect.P_A [in
ABS.abs_defs]
+
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_co_param [in
ABS.abs_defs]
+
e_rect.H_e_co [in
ABS.abs_defs]
+
e_rect.H_e_term [in
ABS.abs_defs]
+
e_rect.H_e_var [in
ABS.abs_defs]
+
e_rect.H_e_b [in
ABS.abs_defs]
+
e_rect.P_list_e [in
ABS.abs_defs]
+
e_rect.P_e [in
ABS.abs_defs]
+
T
+
t_rect.H_list_t_cons [in
ABS.abs_defs]
+
t_rect.H_list_t_nil [in
ABS.abs_defs]
+
t_rect.H_term_null [in
ABS.abs_defs]
+
t_rect.H_term_co_param [in
ABS.abs_defs]
+
t_rect.H_term_co [in
ABS.abs_defs]
+
t_rect.P_list_t [in
ABS.abs_defs]
+
t_rect.P_t [in
ABS.abs_defs]
+
T_rect.H_list_T_cons [in
ABS.abs_defs]
+
T_rect.H_list_T_nil [in
ABS.abs_defs]
+
T_rect.H_T_d_param [in
ABS.abs_defs]
+
T_rect.H_T_d [in
ABS.abs_defs]
+
T_rect.H_T_basic_type [in
ABS.abs_defs]
+
T_rect.P_list_T [in
ABS.abs_defs]
+
T_rect.P_T [in
ABS.abs_defs]
+
+
Library Index
+
A
+
abs_functional_metatheory
+
abs_defs
+
+
Constructor Index
+
A
+
A_type_param [in
ABS.abs_defs]
+
A_type [in
ABS.abs_defs]
+
A_name [in
ABS.abs_defs]
+
B
+
B_int [in
ABS.abs_defs]
+
B_bool [in
ABS.abs_defs]
+
C
+
Cons_co_param [in
ABS.abs_defs]
+
Cons_co [in
ABS.abs_defs]
+
ctxv_sig [in
ABS.abs_defs]
+
ctxv_A [in
ABS.abs_defs]
+
D
+
Dd_consl_param [in
ABS.abs_defs]
+
Dd_consl [in
ABS.abs_defs]
+
E
+
e_fn_call [in
ABS.abs_defs]
+
e_co_param [in
ABS.abs_defs]
+
e_co [in
ABS.abs_defs]
+
e_term [in
ABS.abs_defs]
+
e_var [in
ABS.abs_defs]
+
e_b [in
ABS.abs_defs]
+
F
+
F_fn_param [in
ABS.abs_defs]
+
F_fn [in
ABS.abs_defs]
+
R
+
red_fun_ground_param [in
ABS.abs_defs]
+
red_fun_ground [in
ABS.abs_defs]
+
red_fun_exp [in
ABS.abs_defs]
+
red_cons [in
ABS.abs_defs]
+
red_var [in
ABS.abs_defs]
+
S
+
sig_sig [in
ABS.abs_defs]
+
T
+
term_null [in
ABS.abs_defs]
+
term_co_param [in
ABS.abs_defs]
+
term_co [in
ABS.abs_defs]
+
t_tsubst_wt [in
ABS.abs_defs]
+
t_func_decl_param [in
ABS.abs_defs]
+
t_func_decl [in
ABS.abs_defs]
+
t_data_decl_param [in
ABS.abs_defs]
+
t_data_decl [in
ABS.abs_defs]
+
t_cons_decl_param [in
ABS.abs_defs]
+
t_cons_decl [in
ABS.abs_defs]
+
t_cons_expr_param [in
ABS.abs_defs]
+
t_cons_expr [in
ABS.abs_defs]
+
t_func_expr [in
ABS.abs_defs]
+
t_var [in
ABS.abs_defs]
+
t_null [in
ABS.abs_defs]
+
t_bool [in
ABS.abs_defs]
+
T_d_param [in
ABS.abs_defs]
+
T_d [in
ABS.abs_defs]
+
T_basic_type [in
ABS.abs_defs]
+
+
Lemma Index
+
E
+
eq_x [in
ABS.abs_defs]
+
eq_fn [in
ABS.abs_defs]
+
eq_Co [in
ABS.abs_defs]
+
eq_D [in
ABS.abs_defs]
+
eq_N [in
ABS.abs_defs]
+
eq_i [in
ABS.abs_defs]
+
T
+
type_preservation [in
ABS.abs_functional_metatheory]
+
type_preservation_cons_aux [in
ABS.abs_functional_metatheory]
+
type_preservation_var [in
ABS.abs_functional_metatheory]
+
type_preservation_var_aux [in
ABS.abs_functional_metatheory]
+
+
Inductive Index
+
A
+
A [in
ABS.abs_defs]
+
B
+
B [in
ABS.abs_defs]
+
C
+
Cons [in
ABS.abs_defs]
+
ctxv [in
ABS.abs_defs]
+
D
+
Dd [in
ABS.abs_defs]
+
E
+
e [in
ABS.abs_defs]
+
F
+
F [in
ABS.abs_defs]
+
R
+
red_tsubst_e [in
ABS.abs_defs]
+
S
+
sig [in
ABS.abs_defs]
+
T
+
t [in
ABS.abs_defs]
+
T [in
ABS.abs_defs]
+
t_tsubst [in
ABS.abs_defs]
+
t_F [in
ABS.abs_defs]
+
t_dd [in
ABS.abs_defs]
+
t_cons [in
ABS.abs_defs]
+
t_e [in
ABS.abs_defs]
+
+
Section Index
+
A
+
A_rect [in
ABS.abs_defs]
+
E
+
e_rect [in
ABS.abs_defs]
+
T
+
t_rect [in
ABS.abs_defs]
+
T_rect [in
ABS.abs_defs]
+
+
Definition Index
+
A
+
A_ott_ind [in
ABS.abs_defs]
+
A_sind [in
ABS.abs_defs]
+
A_rec [in
ABS.abs_defs]
+
A_ind [in
ABS.abs_defs]
+
A_rect [in
ABS.abs_defs]
+
B
+
b [in
ABS.abs_defs]
+
B_sind [in
ABS.abs_defs]
+
B_rec [in
ABS.abs_defs]
+
B_ind [in
ABS.abs_defs]
+
B_rect [in
ABS.abs_defs]
+
C
+
Co [in
ABS.abs_defs]
+
Cons_sind [in
ABS.abs_defs]
+
Cons_rec [in
ABS.abs_defs]
+
Cons_ind [in
ABS.abs_defs]
+
Cons_rect [in
ABS.abs_defs]
+
ctxv_sind [in
ABS.abs_defs]
+
ctxv_rec [in
ABS.abs_defs]
+
ctxv_ind [in
ABS.abs_defs]
+
ctxv_rect [in
ABS.abs_defs]
+
D
+
D [in
ABS.abs_defs]
+
Dd_sind [in
ABS.abs_defs]
+
Dd_rec [in
ABS.abs_defs]
+
Dd_ind [in
ABS.abs_defs]
+
Dd_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]
+
I
+
i [in
ABS.abs_defs]
+
N
+
N [in
ABS.abs_defs]
+
nsubst [in
ABS.abs_defs]
+
nsubst_A_list [in
ABS.abs_defs]
+
nsubst_A [in
ABS.abs_defs]
+
R
+
red_tsubst_e_sind [in
ABS.abs_defs]
+
red_tsubst_e_ind [in
ABS.abs_defs]
+
S
+
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
+
tsubst [in
ABS.abs_defs]
+
t_tsubst_sind [in
ABS.abs_defs]
+
t_tsubst_ind [in
ABS.abs_defs]
+
t_F_sind [in
ABS.abs_defs]
+
t_F_ind [in
ABS.abs_defs]
+
t_dd_sind [in
ABS.abs_defs]
+
t_dd_ind [in
ABS.abs_defs]
+
t_cons_sind [in
ABS.abs_defs]
+
t_cons_ind [in
ABS.abs_defs]
+
t_e_sind [in
ABS.abs_defs]
+
t_e_ind [in
ABS.abs_defs]
+
t_ott_ind [in
ABS.abs_defs]
+
T_ott_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]
+
V
+
vars_e [in
ABS.abs_defs]
+
X
+
x [in
ABS.abs_defs]
+
xsubst [in
ABS.abs_defs]
+
xsubst_e [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 |
+(180 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 |
+(31 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 |
+(44 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 |
+(10 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 |
+(16 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 |
+(4 entries) |
+
+
+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 |
+(72 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 0000000000000000000000000000000000000000..a975d57b9f4c478c8bf4b32b92a552dcdb35014f
GIT binary patch
literal 71376
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
-fq+2*myodPwiFx?2=r}`
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