From 8de745c0b2af076b109947302f4b49edefa90801 Mon Sep 17 00:00:00 2001 From: Ailrun Date: Tue, 1 Oct 2024 18:44:12 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beluga-l?= =?UTF-8?q?ang/McLTT@cb61d68ebc65ef24df8997aa634d94a96589dab2=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ext/prop-eq/Mcltt.Core.Base.html | 48 + .../Mcltt.Core.Syntactic.CoreInversions.html | 228 ++ ...ltt.Core.Syntactic.CoreTypeInversions.html | 105 + .../Mcltt.Core.Syntactic.Corollaries.html | 607 ++++++ ext/prop-eq/Mcltt.Core.Syntactic.CtxEq.html | 155 ++ ext/prop-eq/Mcltt.Core.Syntactic.CtxSub.html | 249 +++ ext/prop-eq/Mcltt.Core.Syntactic.Presup.html | 1506 ++++++++++++++ ext/prop-eq/Mcltt.Core.Syntactic.Syntax.html | 321 +++ ...ltt.Core.Syntactic.System.Definitions.html | 753 +++++++ .../Mcltt.Core.Syntactic.System.Lemmas.html | 1569 ++++++++++++++ .../Mcltt.Core.Syntactic.System.Tactics.html | 73 + ext/prop-eq/Mcltt.Core.Syntactic.System.html | 40 + .../Mcltt.Core.Syntactic.SystemOpt.html | 493 +++++ ext/prop-eq/Mcltt.LibTactics.html | 677 ++++++ ext/prop-eq/coqdoc.css | 338 +++ ext/prop-eq/dep.html | 305 +++ ext/prop-eq/images/bg_hr.png | Bin 0 -> 78 bytes ext/prop-eq/images/blacktocat.png | Bin 0 -> 463 bytes ext/prop-eq/images/icon_download.png | Bin 0 -> 216 bytes ext/prop-eq/images/sprite_download.png | Bin 0 -> 14832 bytes ext/prop-eq/images/vdi_blue.png | Bin 0 -> 335017 bytes ext/prop-eq/images/vdi_grey.png | Bin 0 -> 38569 bytes ext/prop-eq/index.html | 146 ++ ext/prop-eq/indexpage.html | 1853 +++++++++++++++++ ext/prop-eq/resources/config.js | 72 + ext/prop-eq/resources/coqdoc.css | 197 ++ ext/prop-eq/resources/coqdocjs.css | 248 +++ ext/prop-eq/resources/coqdocjs.js | 189 ++ ext/prop-eq/resources/depgraph.css | 26 + ext/prop-eq/resources/depgraph.js | 47 + ext/prop-eq/styling.css | 1360 ++++++++++++ ext/prop-eq/toc.html | 76 + 32 files changed, 11681 insertions(+) create mode 100644 ext/prop-eq/Mcltt.Core.Base.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.CoreInversions.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.CoreTypeInversions.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.Corollaries.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.CtxEq.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.CtxSub.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.Presup.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.Syntax.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.System.Definitions.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.System.Lemmas.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.System.Tactics.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.System.html create mode 100644 ext/prop-eq/Mcltt.Core.Syntactic.SystemOpt.html create mode 100644 ext/prop-eq/Mcltt.LibTactics.html create mode 100644 ext/prop-eq/coqdoc.css create mode 100644 ext/prop-eq/dep.html create mode 100644 ext/prop-eq/images/bg_hr.png create mode 100644 ext/prop-eq/images/blacktocat.png create mode 100644 ext/prop-eq/images/icon_download.png create mode 100644 ext/prop-eq/images/sprite_download.png create mode 100644 ext/prop-eq/images/vdi_blue.png create mode 100644 ext/prop-eq/images/vdi_grey.png create mode 100644 ext/prop-eq/index.html create mode 100644 ext/prop-eq/indexpage.html create mode 100644 ext/prop-eq/resources/config.js create mode 100644 ext/prop-eq/resources/coqdoc.css create mode 100644 ext/prop-eq/resources/coqdocjs.css create mode 100644 ext/prop-eq/resources/coqdocjs.js create mode 100644 ext/prop-eq/resources/depgraph.css create mode 100644 ext/prop-eq/resources/depgraph.js create mode 100644 ext/prop-eq/styling.css create mode 100644 ext/prop-eq/toc.html diff --git a/ext/prop-eq/Mcltt.Core.Base.html b/ext/prop-eq/Mcltt.Core.Base.html new file mode 100644 index 00000000..4ff34b83 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Base.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Base

+ +
+#[global] Declare Scope mcltt_scope.
+#[global] Delimit Scope mcltt_scope with mcltt.
+#[global] Bind Scope mcltt_scope with Sortclass.
+ +
+#[global] Declare Custom Entry judg.
+ +
+Notation "{{ x }}" := x (at level 0, x custom judg at level 99, format "'{{' x '}}'").
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.CoreInversions.html b/ext/prop-eq/Mcltt.Core.Syntactic.CoreInversions.html new file mode 100644 index 00000000..fd1557a2 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.CoreInversions.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.CoreInversions

+ +
+From Coq Require Import Setoid.
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export SystemOpt.
+Import Syntax_Notations.
+ +
+Corollary wf_zero_inversion : forall Γ A,
+    {{ Γ zero : A }} ->
+    {{ Γ A }}.
+Proof with mautosolve 4.
+  intros * H.
+  dependent induction H;
+    try specialize (IHwf_exp eq_refl)...
+Qed.
+ +
+#[export]
+Hint Resolve wf_zero_inversion : mcltt.
+ +
+Corollary wf_succ_inversion : forall Γ A M,
+    {{ Γ succ M : A }} ->
+    {{ Γ M : }} /\ {{ Γ A }}.
+Proof with mautosolve.
+  intros * H.
+  dependent induction H;
+    try specialize (IHwf_exp1 _ eq_refl);
+    destruct_conjs...
+Qed.
+ +
+#[export]
+Hint Resolve wf_succ_inversion : mcltt.
+ +
+Lemma wf_natrec_inversion : forall Γ A M A' MZ MS,
+    {{ Γ rec M return A' | zero -> MZ | succ -> MS end : A }} ->
+    {{ Γ MZ : A'[Id,,zero] }} /\ {{ Γ, , A' MS : A'[WkWk,,succ(#1)] }} /\ {{ Γ M : }} /\ {{ Γ A'[Id,,M] A }}.
+Proof with mautosolve.
+  intros * H.
+  pose (A0 := A).
+  dependent induction H;
+    try (specialize (IHwf_exp1 _ _ _ _ eq_refl));
+    destruct_conjs;
+    assert {{ Γ s Id : Γ }} by mauto 3;
+    repeat split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_natrec_inversion : mcltt.
+ +
+Corollary wf_fn_inversion : forall {Γ A M C},
+    {{ Γ λ A M : C }} ->
+    exists B, {{ Γ, A M : B }} /\ {{ Γ Π A B C }}.
+Proof with mautosolve 4.
+  intros * H.
+  dependent induction H;
+    try specialize (IHwf_exp1 _ _ eq_refl);
+    destruct_conjs;
+    gen_presups;
+    eexists; split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_fn_inversion : mcltt.
+ +
+Lemma wf_app_inversion : forall {Γ M N C},
+    {{ Γ M N : C }} ->
+    exists A B, {{ Γ M : Π A B }} /\ {{ Γ N : A }} /\ {{ Γ B[Id,,N] C }}.
+Proof with mautosolve.
+  intros * H.
+  dependent induction H;
+    try specialize (IHwf_exp1 _ _ eq_refl);
+    destruct_conjs;
+    do 2 eexists; repeat split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_app_inversion : mcltt.
+ +
+Lemma wf_vlookup_inversion : forall {Γ x A},
+    {{ Γ #x : A }} ->
+    exists A', {{ #x : A' Γ }} /\ {{ Γ A' A }}.
+Proof with mautosolve 4.
+  intros * H.
+  dependent induction H;
+    [assert (exists i, {{ Γ A : Type@i }}) as [] by mauto 4 |];
+    try (specialize (IHwf_exp1 _ eq_refl));
+    destruct_conjs;
+    eexists; split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_vlookup_inversion : mcltt.
+ +
+Lemma wf_exp_sub_inversion : forall {Γ M σ A},
+    {{ Γ M[σ] : A }} ->
+    exists Δ A', {{ Γ s σ : Δ }} /\ {{ Δ M : A' }} /\ {{ Γ A'[σ] A }}.
+Proof with mautosolve.
+  intros * H.
+  dependent induction H;
+    try (specialize (IHwf_exp1 _ _ eq_refl));
+    destruct_conjs;
+    gen_presups;
+    do 2 eexists; split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_sub_inversion : mcltt.
+ +
+
+ +
+We omit wf_conv and wf_cumu as they do not give useful inversions +
+
+ +
+Lemma wf_sub_id_inversion : forall Γ Δ,
+    {{ Γ s Id : Δ }} ->
+    {{ Γ Δ }}.
+Proof.
+  intros * H.
+  dependent induction H; mautosolve.
+Qed.
+ +
+#[export]
+Hint Resolve wf_sub_id_inversion : mcltt.
+ +
+Lemma wf_sub_weaken_inversion : forall {Γ Δ},
+    {{ Γ s Wk : Δ }} ->
+    exists Γ' A, {{ Γ Γ', A }} /\ {{ Γ' Δ }}.
+Proof.
+  intros * H.
+  dependent induction H;
+    firstorder;
+    progressive_inversion;
+    repeat eexists; mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_sub_weaken_inversion : mcltt.
+ +
+Lemma wf_sub_compose_inversion : forall {Γ1 σ1 σ2 Γ3},
+    {{ Γ1 s σ1 σ2 : Γ3 }} ->
+    exists Γ2, {{ Γ1 s σ2 : Γ2 }} /\ {{ Γ2 s σ1 : Γ3 }}.
+Proof with mautosolve 4.
+  intros * H.
+  dependent induction H; mauto.
+  specialize (IHwf_sub _ _ eq_refl).
+  destruct_conjs.
+  eexists.
+  repeat split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_sub_compose_inversion : mcltt.
+ +
+Lemma wf_sub_extend_inversion : forall {Γ σ M Δ},
+    {{ Γ s σ,,M : Δ }} ->
+    exists Δ' A', {{ Δ', A' Δ }} /\ {{ Γ s σ : Δ' }} /\ {{ Γ M : A'[σ] }}.
+Proof with mautosolve 4.
+  intros * H.
+  dependent induction H;
+    try specialize (IHwf_sub _ _ eq_refl);
+    destruct_conjs;
+    repeat eexists...
+Qed.
+ +
+#[export]
+Hint Resolve wf_sub_extend_inversion : mcltt.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.CoreTypeInversions.html b/ext/prop-eq/Mcltt.Core.Syntactic.CoreTypeInversions.html new file mode 100644 index 00000000..bfb18b8c --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.CoreTypeInversions.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.CoreTypeInversions

+ +
+From Coq Require Import Setoid.
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export System.
+Import Syntax_Notations.
+ +
+Lemma wf_typ_inversion : forall {Γ i A},
+    {{ Γ Type@i : A }} ->
+    {{ Γ Type@(S i) A }}.
+Proof with mautosolve.
+  intros * H.
+  dependent induction H...
+Qed.
+ +
+#[export]
+Hint Resolve wf_typ_inversion : mcltt.
+ +
+Lemma wf_nat_inversion : forall Γ A,
+    {{ Γ : A }} ->
+    {{ Γ Type@0 A }}.
+Proof with mautosolve 4.
+  intros * H.
+  assert (forall i, 0 <= i) by lia.
+  dependent induction H...
+Qed.
+ +
+#[export]
+Hint Resolve wf_nat_inversion : mcltt.
+ +
+Lemma wf_pi_inversion : forall {Γ A B C},
+    {{ Γ Π A B : C }} ->
+    exists i, {{ Γ A : Type@i }} /\ {{ Γ, A B : Type@i }} /\ {{ Γ Type@i C }}.
+Proof with mautosolve 4.
+  intros * H.
+  dependent induction H;
+    try specialize (IHwf_exp1 _ _ eq_refl);
+    destruct_conjs;
+    assert {{ Γ }} by mauto 3;
+    eexists; split...
+Qed.
+ +
+#[export]
+Hint Resolve wf_pi_inversion : mcltt.
+ +
+Corollary wf_pi_inversion' : forall {Γ A B i},
+    {{ Γ Π A B : Type@i }} ->
+    {{ Γ A : Type@i }} /\ {{ Γ, A B : Type@i }}.
+Proof with mautosolve 4.
+  intros * [j [? []]]%wf_pi_inversion.
+  assert {{ Γ, A s Wk : Γ }} by mauto 4.
+  assert {{ Γ, A Type@j Type@j[Wk] }} by (econstructor; mauto 4).
+  assert {{ Γ, A Type@j[Wk] Type@i[Wk] }} by mauto 4.
+  assert {{ Γ, A Type@i[Wk] Type@i }} by (econstructor; mauto 4).
+  enough {{ Γ, A Type@j Type@i }}...
+Qed.
+ +
+#[export]
+Hint Resolve wf_pi_inversion' : mcltt.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.Corollaries.html b/ext/prop-eq/Mcltt.Core.Syntactic.Corollaries.html new file mode 100644 index 00000000..1fbcc851 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.Corollaries.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.Corollaries

+ +
+From Coq Require Import Setoid Nat.
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export CoreInversions.
+Import Syntax_Notations.
+ +
+Corollary sub_id_typ : forall Γ M A,
+    {{ Γ M : A }} ->
+    {{ Γ M : A [ Id ] }}.
+Proof.
+  intros.
+  gen_presups.
+  econstructor; mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve sub_id_typ : mcltt.
+ +
+Corollary invert_sub_id : forall Γ M A,
+    {{ Γ M [ Id ] : A }} ->
+    {{ Γ M : A }}.
+Proof.
+  intros * [? [? [?%wf_sub_id_inversion []]]]%wf_exp_sub_inversion.
+  mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve invert_sub_id : mcltt.
+ +
+Corollary invert_sub_id_typ : forall Γ M A,
+    {{ Γ M : A[Id] }} ->
+    {{ Γ M : A }}.
+Proof.
+  intros.
+  gen_presups.
+  assert {{ Γ A : Type@i }} by mauto.
+  autorewrite with mcltt in *; eassumption.
+Qed.
+ +
+#[export]
+Hint Resolve invert_sub_id_typ : mcltt.
+ +
+Lemma invert_compose_id : forall {Γ σ Δ},
+    {{ Γ s σ Id : Δ }} ->
+    {{ Γ s σ : Δ }}.
+Proof.
+  intros * [? []]%wf_sub_compose_inversion.
+  mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve invert_compose_id : mcltt.
+ +
+Add Parametric Morphism i Γ Δ : a_sub
+    with signature wf_exp_eq Δ {{{ Type@i }}} ==> wf_sub_eq Γ Δ ==> wf_exp_eq Γ {{{ Type@i }}} as sub_typ_cong.
+Proof.
+  intros.
+  gen_presups.
+  mauto 4.
+Qed.
+ +
+Add Parametric Morphism Γ1 Γ2 Γ3 : a_compose
+    with signature wf_sub_eq Γ2 Γ3 ==> wf_sub_eq Γ1 Γ2 ==> wf_sub_eq Γ1 Γ3 as sub_compose_cong.
+Proof. mauto. Qed.
+ +
+Lemma wf_ctx_sub_length : forall Γ Δ,
+    {{ Γ Δ }} ->
+    length Γ = length Δ.
+Proof. induction 1; simpl; auto. Qed.
+ +
+Open Scope list_scope.
+ +
+Lemma app_ctx_lookup : forall Δ T Γ n,
+    length Δ = n ->
+    {{ #n : ~(iter (S n) (fun T => {{{T [ Wk ]}}}) T) ~(Δ ++ T :: Γ) }}.
+Proof.
+  induction Δ; intros; simpl in *; subst; mauto.
+Qed.
+ +
+Lemma ctx_lookup_functional : forall n T Γ,
+    {{ #n : T Γ }} ->
+    forall T',
+      {{ #n : T' Γ }} ->
+      T = T'.
+Proof.
+  induction 1; intros; progressive_inversion; eauto.
+  erewrite IHctx_lookup; eauto.
+Qed.
+ +
+Lemma app_ctx_vlookup : forall Δ T Γ n,
+    {{ ~(Δ ++ T :: Γ) }} ->
+    length Δ = n ->
+    {{ ~(Δ ++ T :: Γ) #n : ~(iter (S n) (fun T => {{{T [ Wk ]}}}) T) }}.
+Proof.
+  intros. econstructor; auto using app_ctx_lookup.
+Qed.
+ +
+Lemma sub_q_eq : forall Δ A i Γ σ σ',
+                   {{ Δ A : Type@i }} ->
+                   {{ Γ s σ σ' : Δ }} ->
+                   {{ Γ, A[σ] s q σ q σ' : Δ, A }}.
+Proof.
+  intros. gen_presup H0.
+  econstructor; mauto 3.
+  - econstructor; mauto 4.
+  - rewrite <- @exp_eq_sub_compose_typ; mauto 4.
+Qed.
+#[export]
Hint Resolve sub_q_eq : mcltt.
+ +
+Lemma wf_subtyp_subst_eq : forall Δ A B,
+    {{ Δ A B }} ->
+    forall Γ σ σ',
+      {{ Γ s σ σ' : Δ }} ->
+      {{ Γ A [σ] B[σ'] }}.
+Proof.
+  induction 1; intros * Hσσ'; gen_presup Hσσ'.
+  - eapply wf_subtyp_refl'.
+    eapply wf_exp_eq_conv; mauto 4.
+  - etransitivity; mauto 4.
+  - autorewrite with mcltt.
+    mauto 2.
+  - autorewrite with mcltt.
+    eapply wf_subtyp_pi'; mauto.
+Qed.
+ +
+Lemma wf_subtyp_subst : forall Δ A B,
+    {{ Δ A B }} ->
+    forall Γ σ,
+      {{ Γ s σ : Δ }} ->
+      {{ Γ A [σ] B[σ] }}.
+Proof.
+  intros; mauto 2 using wf_subtyp_subst_eq.
+Qed.
+#[export]
+Hint Resolve wf_subtyp_subst_eq wf_subtyp_subst : mcltt.
+ +
+Lemma exp_typ_sub_lhs : forall {Γ σ Δ i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ Type@i[σ] : Type@(S i) }}.
+Proof.
+  intros; mauto 4.
+Qed.
+#[export]
+Hint Resolve exp_typ_sub_lhs : mcltt.
+ +
+Lemma exp_nat_sub_lhs : forall {Γ σ Δ i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ [σ] : Type@i }}.
+Proof.
+  intros; mauto 4.
+Qed.
+#[export]
+Hint Resolve exp_nat_sub_lhs : mcltt.
+ +
+Lemma exp_zero_sub_lhs : forall {Γ σ Δ},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ zero[σ] : }}.
+Proof.
+  intros; mauto 4.
+Qed.
+#[export]
+Hint Resolve exp_zero_sub_lhs : mcltt.
+ +
+Lemma exp_succ_sub_lhs : forall {Γ σ Δ M},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ M : }} ->
+    {{ Γ (succ M)[σ] : }}.
+Proof.
+  intros; mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_succ_sub_lhs : mcltt.
+ +
+Lemma exp_succ_sub_rhs : forall {Γ σ Δ M},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ M : }} ->
+    {{ Γ succ (M[σ]) : }}.
+Proof.
+  intros; mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_succ_sub_rhs : mcltt.
+ +
+Lemma sub_decompose_q : forall Γ S i σ Δ Δ' τ t,
+  {{Γ S : Type@i}} ->
+  {{Δ s σ : Γ}} ->
+  {{Δ' s τ : Δ}} ->
+  {{Δ' t : S [ σ ] [ τ ]}} ->
+  {{Δ' s q σ (τ ,, t) σ τ ,, t : Γ, S}}.
+Proof.
+  intros. gen_presups.
+  simpl. autorewrite with mcltt.
+  symmetry.
+  rewrite wf_sub_eq_extend_compose; mauto 3;
+    [| mauto
+    | rewrite <- @exp_eq_sub_compose_typ; mauto 4].
+  eapply wf_sub_eq_extend_cong; eauto.
+  - rewrite wf_sub_eq_compose_assoc; mauto 3; mauto 4.
+    rewrite wf_sub_eq_p_extend; eauto; mauto 4.
+  - rewrite <- @exp_eq_sub_compose_typ; mauto 4.
+Qed.
+ +
+#[local]
+Hint Rewrite -> @sub_decompose_q using mauto 4 : mcltt.
+ +
+Lemma sub_decompose_q_typ : forall Γ S T i σ Δ Δ' τ t,
+  {{Γ, S T : Type@i}} ->
+  {{Δ s σ : Γ}} ->
+  {{Δ' s τ : Δ}} ->
+  {{Δ' t : S [ σ ] [ τ ]}} ->
+  {{Δ' T [ σ τ ,, t ] T [ q σ ] [ τ ,, t ] : Type@i}}.
+Proof.
+  intros. gen_presups.
+  autorewrite with mcltt.
+  eapply exp_eq_sub_cong_typ2'; [mauto 2 | econstructor; mauto 4 |].
+  eapply sub_eq_refl; econstructor; mauto 3.
+Qed.
+ +
+Lemma sub_eq_p_q_sigma_compose_tau_extend : forall {Δ' τ Δ M A i σ Γ},
+    {{ Δ s σ : Γ }} ->
+    {{ Δ' s τ : Δ }} ->
+    {{ Γ A : Type@i }} ->
+    {{ Δ' M : A[σ][τ] }} ->
+    {{ Δ' s Wk(q σ(τ,,M)) στ : Γ }}.
+Proof.
+  intros.
+  assert {{ Γ, A }} by mauto 3.
+  assert {{ Δ, A[σ] s q σ : Γ, A }} by mauto 2.
+  assert {{ Δ' s τ,,M : Δ, A[σ] }} by mauto 3.
+  transitivity {{{ Wk((στ),,M) }}}; [| autorewrite with mcltt; mauto 3].
+  eapply wf_sub_eq_compose_cong; [| mauto 2].
+  autorewrite with mcltt; econstructor; mauto 3.
+  assert {{ Δ' A[στ] A[σ][τ] : Type@i }} as -> by mauto 3.
+  mauto 3.
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_p_q_sigma_compose_tau_extend : mcltt.
+#[export]
+Hint Rewrite -> @sub_eq_p_q_sigma_compose_tau_extend using mauto 4 : mcltt.
+ +
+Lemma exp_eq_natrec_cong_rhs_typ : forall {Γ M M' A A' i},
+    {{ Γ, A A' : Type@i }} ->
+    {{ Γ M M' : }} ->
+    {{ Γ A[Id,,M] A'[Id,,M'] : Type@i }}.
+Proof.
+  intros.
+  gen_presups.
+  assert {{ Γ [Id] : Type@0 }} by mauto 3.
+  assert {{ Γ M M' : [Id] }} by mauto 3.
+  assert {{ Γ s Id,,M Id,,M' : Γ, }} as -> by mauto 3.
+  mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_eq_natrec_cong_rhs_typ : mcltt.
+ +
+
+ +
+This works for both natrec_sub and app_sub cases +
+
+Lemma exp_eq_elim_sub_lhs_typ_gen : forall {Γ σ Δ M A B i},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ, A B : Type@i }} ->
+    {{ Δ M : A }} ->
+    {{ Γ B[Id,,M][σ] B[σ,,M[σ]] : Type@i }}.
+Proof.
+  intros.
+  assert {{ Δ }} by mauto 2.
+  assert (exists j, {{ Δ A : Type@j }}) as [] by mauto 3.
+  assert {{ Δ s Id,,M : Δ, A }} by mauto 3.
+  autorewrite with mcltt.
+  assert {{ Γ M[σ] : A[σ] }} by mauto 2.
+  assert {{ Γ s σ,,M[σ] (Id,,M)σ : Δ, A }} as -> by mauto 3.
+  mauto 4.
+Qed.
+#[export]
+Hint Resolve exp_eq_elim_sub_lhs_typ_gen : mcltt.
+ +
+
+ +
+This works for both natrec_sub and app_sub cases +
+
+Lemma exp_eq_elim_sub_rhs_typ : forall {Γ σ Δ M A B i},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ, A B : Type@i }} ->
+    {{ Γ M : A[σ] }} ->
+    {{ Γ B[q σ][Id,,M] B[σ,,M] : Type@i }}.
+Proof.
+  intros.
+  assert (exists j, {{ Δ A : Type@j }}) as [] by mauto 3.
+  autorewrite with mcltt.
+  assert {{ Γ s σId σ : Δ }} by mauto 3.
+  assert {{ Γ s σ,,M (σId),,M : Δ, A }} as <-; mauto 4.
+Qed.
+#[export]
+Hint Resolve exp_eq_elim_sub_rhs_typ : mcltt.
+ +
+Lemma exp_eq_sub_cong_typ2 : forall {Δ Γ A σ τ i},
+    {{ Δ A : Type@i }} ->
+    {{ Γ s σ τ : Δ }} ->
+    {{ Γ A[σ] A[τ] : Type@i }}.
+Proof with mautosolve 3.
+  intros.
+  gen_presups.
+  mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_eq_sub_cong_typ2 : mcltt.
+#[export]
+Remove Hints exp_eq_sub_cong_typ2' : mcltt.
+ +
+Lemma exp_eq_nat_beta_succ_rhs_typ_gen : forall {Γ σ Δ i A M N},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ, A : Type@i }} ->
+    {{ Γ M : }} ->
+    {{ Γ N : A[σ,,M] }} ->
+    {{ Γ A[WkWk,,succ #1][σ,,M,,N] A[σ,,succ M] : Type@i }}.
+Proof.
+  intros.
+  assert {{ Δ }} by mauto 3.
+  assert {{ Δ, s Wk : Δ }} by mauto 3.
+  assert {{ Δ, , A s Wk : Δ, }} by mauto 4.
+  assert {{ Δ, , A s WkWk : Δ }} by mauto 3.
+  assert {{ Δ, , A s WkWk,,succ #1 : Δ, }} by mauto 3.
+  assert {{ Γ s σ,,M : Δ, }} by mauto 4.
+  assert {{ Γ s σ,,M,,N : Δ, , A }} by mauto 3.
+  assert {{ Γ s σ,,M,,N : Δ, , A }} by mauto 3.
+  autorewrite with mcltt.
+  assert {{ Γ s (WkWk,,succ #1)(σ,,M,,N) ((WkWk)(σ,,M,,N)),,(succ #1)[σ,,M,,N] : Δ, }} as -> by mauto 4.
+  assert {{ Γ s (WkWk)(σ,,M,,N) Wk(Wk(σ,,M,,N)) : Δ }} by mauto 3.
+  assert {{ Γ s Wk(σ,,M,,N) σ,,M : Δ, }} by (autorewrite with mcltt; mauto 3).
+  assert {{ Γ s (WkWk)(σ,,M,,N) Wk(σ,,M) : Δ }} by (unshelve bulky_rewrite; constructor).
+  assert {{ Γ s (WkWk)(σ,,M,,N) σ : Δ }} by bulky_rewrite.
+  assert {{ Γ (succ #1)[σ,,M,,N] succ (#1[σ,,M,,N]) : }} by mauto 3.
+  assert {{ Γ (succ #1)[σ,,M,,N] succ (#0[σ,,M]) : }} by (bulky_rewrite; mauto 4).
+  assert {{ Γ (succ #1)[σ,,M,,N] succ M : }} by (bulky_rewrite; mauto 3).
+  assert {{ Γ s (WkWk)(σ,,M,,N),,(succ #1)[σ,,M,,N] σ,,succ M : Δ, }} by mauto 3.
+  mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_eq_nat_beta_succ_rhs_typ_gen : mcltt.
+ +
+Lemma exp_pi_sub_lhs : forall {Γ σ Δ A B i},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Δ, A B : Type@i }} ->
+    {{ Γ (Π A B)[σ] : Type@i }}.
+Proof.
+  intros.
+  mauto 4.
+Qed.
+#[export]
+Hint Resolve exp_pi_sub_lhs : mcltt.
+ +
+Lemma exp_pi_sub_rhs : forall {Γ σ Δ A B i},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Δ, A B : Type@i }} ->
+    {{ Γ Π A[σ] B[q σ] : Type@i }}.
+Proof.
+  intros.
+  econstructor; mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_pi_sub_rhs : mcltt.
+ +
+Lemma exp_pi_eta_rhs_body : forall {Γ A B M},
+    {{ Γ M : Π A B }} ->
+    {{ Γ, A M[Wk] #0 : B }}.
+Proof.
+  intros.
+  gen_presups.
+  assert ({{ Γ A : Type@i }} /\ {{ Γ, A B : Type@i }}) as [] by mauto 2.
+  assert {{ Γ, A s Wk : Γ }} by mauto 3.
+  assert {{ Γ, A, A[Wk] s q Wk : Γ, A }} by mauto 3.
+  assert {{ Γ, A M[Wk] : (Π A B)[Wk] }} by mauto 3.
+  assert {{ Γ, A Π A[Wk] B[q Wk] (Π A B)[Wk] : Type@i }} by (autorewrite with mcltt; mauto 3).
+  assert {{ Γ, A M[Wk] : Π A[Wk] B[q Wk] }} by mauto 3.
+  econstructor; [econstructor; revgoals; mauto 3 | mauto 3 |].
+  eapply wf_subtyp_refl'.
+  autorewrite with mcltt.
+  - transitivity {{{ B[Id] }}}; [| mauto 3].
+    eapply exp_eq_sub_cong_typ2; mauto 4.
+    transitivity {{{ Wk,,#0 }}}; [| mauto 3].
+    econstructor; mauto 3.
+    autorewrite with mcltt.
+    mauto 3.
+  - econstructor; mauto 3.
+    autorewrite with mcltt.
+    mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_pi_eta_rhs_body : mcltt.
+ +
+
+ +
+This works for both var_0 and var_S cases +
+
+Lemma exp_eq_var_sub_rhs_typ_gen : forall {Γ σ Δ i A M},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Γ M : A[σ] }} ->
+    {{ Γ A[Wk][σ,,M] A[σ] : Type@i }}.
+Proof.
+  intros.
+  assert {{ Γ s σ,,M : Δ, A }} by mauto 3.
+  autorewrite with mcltt.
+  mauto 3.
+Qed.
+#[export]
+Hint Resolve exp_eq_var_sub_rhs_typ_gen : mcltt.
+ +
+Lemma exp_sub_decompose_double_q_with_id_double_extend : forall Γ A B C σ Δ M N L,
+  {{ Γ, B, C M : A }} ->
+  {{ Δ s σ : Γ }} ->
+  {{ Δ N : B[σ] }} ->
+  {{ Δ L : C[σ,,N] }} ->
+  {{ Δ M[σ,,N,,L] M[q (q σ)][Id,,N,,L] : A[σ,,N,,L] }}.
+Proof.
+  intros.
+  gen_presups.
+  assert (exists i, {{ Γ B : Type@i }}) as [] by mauto 3.
+  assert {{ Δ, B[σ] s q σ : Γ, B }} by mauto 3.
+  assert {{ Δ s Id,,N : Δ, B[σ] }} by mauto 3.
+  assert {{ Δ L : C[q σ][Id,,N] }} by (rewrite -> @exp_eq_elim_sub_rhs_typ; mauto 3).
+  assert {{ Δ L : C[q σ(Id,,N)] }} by mauto 4.
+  assert {{ Δ s Id,,N,,L : Δ, B[σ], C[q σ] }} by mauto 3.
+  assert {{ Δ s q σ(Id,,N) σ,,N : Γ, B }} by mauto 3.
+  exvar nat ltac:(fun i => assert {{ Δ C[q σ][Id,,N] C[σ,,N] : Type@i }} by mauto 3).
+  assert {{ Δ s q (q σ)(Id,,N,,L) (q σ(Id,,N)),,L : Γ, B, C }} by (eapply sub_decompose_q; mauto 3).
+  assert {{ Δ s q (q σ)(Id,,N,,L) σ,,N,,L : Γ, B, C }} by (bulky_rewrite; mauto 3).
+  exvar nat ltac:(fun i => assert {{ Δ A[q (q σ)][Id,,N,,L] A[q (q σ)(Id,,N,,L)] : Type@i }} by mauto 3).
+  exvar nat ltac:(fun i => assert {{ Δ A[q (q σ)(Id,,N,,L)] A[σ,,N,,L] : Type@i }} as <- by mauto 3).
+  assert {{ Δ M[q (q σ)][Id,,N,,L] M[q (q σ)(Id,,N,,L)] : A[q (q σ)(Id,,N,,L)] }} by mauto 4.
+  assert {{ Δ M[q (q σ)][Id,,N,,L] M[σ,,N,,L] : A[q (q σ)(Id,,N,,L)] }} by (bulky_rewrite; mauto 3).
+  symmetry; mauto 3.
+Qed.
+ +
+#[export]
+Hint Resolve exp_sub_decompose_double_q_with_id_double_extend : mcltt.
+ +
+Lemma sub_eq_q_compose : forall {Γ A i σ Δ τ Δ'},
+  {{ Γ A : Type@i }} ->
+  {{ Δ s σ : Γ }} ->
+  {{ Δ' s τ : Δ }} ->
+  {{ Δ', A[στ] s q σq τ q (στ) : Γ, A }}.
+Proof.
+  intros.
+  assert {{ Δ' }} by mauto 3.
+  assert {{ Δ' A[στ] A[σ][τ] : Type@i }} by mauto 3.
+  assert {{ Δ', A[σ][τ] }} by mauto 4.
+  assert {{ Δ', A[στ] Δ', A[σ][τ] }} as -> by mauto.
+  assert {{ Δ }} by mauto 3.
+  assert {{ Δ, A[σ] }} by mauto 3.
+  assert {{ Δ, A[σ] s Wk : Δ }} by mauto 3.
+  assert {{ Δ, A[σ] #0 : A[σ][Wk] }} by mauto 3.
+  assert {{ Δ, A[σ] #0 : A[σWk] }} by mauto 3.
+  transitivity {{{ ((σWk)q τ),,#0[q τ] }}}; [econstructor; mauto 3 |].
+  symmetry; econstructor; mauto 3; symmetry.
+  - transitivity {{{ σ(Wkq τ) }}}; [mauto 4 |].
+    assert {{ Δ' A[σ][τ] : Type@i }} by mauto 3.
+    assert {{ Δ', A[σ][τ] s Wk : Δ' }} by mauto 3.
+    transitivity {{{ σ(τWk) }}}; [| mauto 3].
+    econstructor; mauto 3.
+  - assert {{ Δ', A[σ][τ] A[(στ)Wk] A[σ(τWk)] : Type@i }} by mauto 4.
+    assert {{ Δ', A[σ][τ] A[σ(τWk)] A[σ][τWk] : Type@i }} by mauto.
+    bulky_rewrite.
+    econstructor; mauto 3.
+    assert {{ Δ', A[σ][τ] A[(στ)Wk] A[σ][τWk] : Type@i }} as <- by mauto 3.
+    assert {{ Δ', A[σ][τ] A[(στ)Wk] A[στ][Wk] : Type@i }} as -> by mauto.
+    assert {{ Δ', A[σ][τ] A[στ][Wk] A[σ][τ][Wk] : Type@i }} as -> by mauto 3.
+    mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_q_compose : mcltt.
+#[export]
+Hint Rewrite -> @sub_eq_q_compose using mauto 4 : mcltt.
+ +
+Lemma sub_eq_q_compose_nat : forall {Γ σ Δ τ Δ'},
+  {{ Δ s σ : Γ }} ->
+  {{ Δ' s τ : Δ }} ->
+  {{ Δ', s q σq τ q (στ) : Γ, }}.
+Proof.
+  intros.
+  assert {{ Γ : Type@0 }} by mauto 3.
+  assert {{ Δ' [στ] : Type@0 }} by mauto 3.
+  assert {{ Δ' }} by mauto 3.
+  assert {{ Δ', [στ] Δ', }} as <- by mauto 3.
+  mautosolve 2.
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_q_compose_nat : mcltt.
+#[export]
+Hint Rewrite -> @sub_eq_q_compose_nat using mauto 4 : mcltt.
+ +
+Lemma exp_eq_typ_q_sigma_then_weak_weak_extend_succ_var_1 : forall {Δ σ Γ i A},
+    {{ Δ s σ : Γ }} ->
+    {{ Γ, A : Type@i }} ->
+    {{ Δ, , A[q σ] A[q σ][WkWk,,succ #1] A[WkWk,,succ #1][q (q σ)] : Type@i }}.
+Proof.
+  intros.
+  assert {{ Δ, s q σ : Γ, }} by mauto 3.
+  assert {{ Δ, , A[q σ] s WkWk,,succ #1 : Δ, }} by mauto 3.
+  assert {{ Δ, , A[q σ] A[q σ][WkWk,,succ #1] A[q σ(WkWk,,succ #1)] : Type@i }} as -> by mauto 3.
+  assert {{ Δ, , A[q σ] s q (q σ) : Γ, , A }} by mauto 3.
+  assert {{ Δ, , A[q σ] A[WkWk,,succ #1][q (q σ)] A[(WkWk,,succ #1)q (q σ)] : Type@i }} as -> by mauto 3.
+  rewrite -> @sub_eq_q_sigma_compose_weak_weak_extend_succ_var_1; mauto 2.
+  eapply exp_eq_refl.
+  eapply exp_sub_typ; mauto 2.
+  econstructor; mauto 3.
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_typ_q_sigma_then_weak_weak_extend_succ_var_1 : mcltt.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.CtxEq.html b/ext/prop-eq/Mcltt.Core.Syntactic.CtxEq.html new file mode 100644 index 00000000..6d2f956b --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.CtxEq.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.CtxEq

+ +
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export CtxSub.
+Import Syntax_Notations.
+ +
+Lemma ctx_eq_refl : forall {Γ}, {{ Γ }} -> {{ Γ Γ }}.
+Proof with mautosolve.
+  induction 1...
+Qed.
+ +
+#[export]
+Hint Resolve ctx_eq_refl : mcltt.
+ +
+Lemma ctx_eq_sym : forall {Γ Δ}, {{ Γ Δ }} -> {{ Δ Γ }}.
+Proof.
+  intros.
+  symmetry.
+  eassumption.
+Qed.
+ +
+#[export]
+Hint Resolve ctx_eq_sym : mcltt.
+ +
+Lemma ctxeq_exp : forall {Γ Δ M A}, {{ Γ Δ }} -> {{ Γ M : A }} -> {{ Δ M : A }}.
+Proof. mauto. Qed.
+ +
+Lemma ctxeq_exp_eq : forall {Γ Δ M M' A}, {{ Γ Δ }} -> {{ Γ M M' : A }} -> {{ Δ M M' : A }}.
+Proof. mauto. Qed.
+ +
+Lemma ctxeq_sub : forall {Γ Δ σ Γ'}, {{ Γ Δ }} -> {{ Γ s σ : Γ' }} -> {{ Δ s σ : Γ' }}.
+Proof. mauto. Qed.
+ +
+Lemma ctxeq_sub_eq : forall {Γ Δ σ σ' Γ'}, {{ Γ Δ }} -> {{ Γ s σ σ' : Γ' }} -> {{ Δ s σ σ' : Γ' }}.
+Proof. mauto. Qed.
+ +
+Lemma ctxeq_subtyp : forall {Γ Δ A B}, {{ Γ Δ }} -> {{ Γ A B }} -> {{ Δ A B }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve ctxeq_exp ctxeq_exp_eq ctxeq_sub ctxeq_sub_eq ctxeq_subtyp : mcltt.
+ +
+Lemma ctx_eq_trans : forall {Γ0 Γ1 Γ2}, {{ Γ0 Γ1 }} -> {{ Γ1 Γ2 }} -> {{ Γ0 Γ2 }}.
+Proof with mautosolve.
+  intros * HΓ01.
+  gen Γ2.
+  induction HΓ01 as [|Γ0 ? i01 T0 T1]; mauto.
+  inversion_clear 1 as [|? Γ2' i12 ? T2].
+  clear Γ2; rename Γ2' into Γ2.
+  set (i := max i01 i12).
+  assert {{ Γ0 T0 : Type@i }} by mauto using lift_exp_max_left.
+  assert {{ Γ2 T2 : Type@i }} by mauto using lift_exp_max_right.
+  assert {{ Γ0 T0 T1 : Type@i }} by mauto using lift_exp_eq_max_left.
+  assert {{ Γ2 T1 T2 : Type@i }} by mauto using lift_exp_eq_max_right.
+  assert {{ Γ0 Γ2 }} by mauto.
+  assert {{ Γ0 T0 T2 : Type@i }} by mauto.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve ctx_eq_trans : mcltt.
+ +
+#[export]
+Instance wf_ctx_PER : PER wf_ctx_eq.
+Proof.
+  split.
+  - eauto using ctx_eq_sym.
+  - eauto using ctx_eq_trans.
+Qed.
+ +
+Add Parametric Morphism : wf_exp
+  with signature wf_ctx_eq ==> eq ==> eq ==> iff as ctxeq_exp_morphism.
+Proof.
+  intros. split; mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_exp_eq
+  with signature wf_ctx_eq ==> eq ==> eq ==> eq ==> iff as ctxeq_exp_eq_morphism.
+Proof.
+  intros. split; mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_sub
+  with signature wf_ctx_eq ==> eq ==> eq ==> iff as ctxeq_sub_morphism.
+Proof.
+  intros. split; mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_sub_eq
+  with signature wf_ctx_eq ==> eq ==> eq ==> eq ==> iff as ctxeq_sub_eq_morphism.
+Proof.
+  intros. split; mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_subtyp
+  with signature wf_ctx_eq ==> eq ==> eq ==> iff as ctxeq_subtyp_morphism.
+Proof.
+  intros. split; mauto 3.
+Qed.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.CtxSub.html b/ext/prop-eq/Mcltt.Core.Syntactic.CtxSub.html new file mode 100644 index 00000000..96ab9b85 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.CtxSub.html @@ -0,0 +1,249 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.CtxSub

+ +
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export System.
+Import Syntax_Notations.
+ +
+Lemma ctx_sub_refl : forall {Γ},
+    {{ Γ }} ->
+    {{ Γ Γ }}.
+Proof with mautosolve.
+  induction 1...
+Qed.
+ +
+#[export]
+Hint Resolve ctx_sub_refl : mcltt.
+ +
+Module ctxsub_judg.
+  #[local]
+  Ltac gen_ctxsub_helper_IH ctxsub_exp_helper ctxsub_exp_eq_helper ctxsub_sub_helper ctxsub_sub_eq_helper ctxsub_subtyp_helper H :=
+  match type of H with
+  | {{ ~?Γ ~?M : ~?A }} => pose proof ctxsub_exp_helper _ _ _ H
+  | {{ ~?Γ ~?M ~?N : ~?A }} => pose proof ctxsub_exp_eq_helper _ _ _ _ H
+  | {{ ~?Γ s ~: ~?Δ }} => pose proof ctxsub_sub_helper _ _ _ H
+  | {{ ~?Γ s ~ ~: ~?Δ }} => pose proof ctxsub_sub_eq_helper _ _ _ _ H
+  | {{ ~?Γ ~?M ~?M' }} => pose proof ctxsub_subtyp_helper _ _ _ H
+  end.
+ +
+  #[local]
+  Lemma ctxsub_exp_helper : forall {Γ M A}, {{ Γ M : A }} -> forall {Δ}, {{ Δ Γ }} -> {{ Δ M : A }}
+  with
+  ctxsub_exp_eq_helper : forall {Γ M M' A}, {{ Γ M M' : A }} -> forall {Δ}, {{ Δ Γ }} -> {{ Δ M M' : A }}
+  with
+  ctxsub_sub_helper : forall {Γ Γ' σ}, {{ Γ s σ : Γ' }} -> forall {Δ}, {{ Δ Γ }} -> {{ Δ s σ : Γ' }}
+  with
+  ctxsub_sub_eq_helper : forall {Γ Γ' σ σ'}, {{ Γ s σ σ' : Γ' }} -> forall {Δ}, {{ Δ Γ }} -> {{ Δ s σ σ' : Γ' }}
+  with
+  ctxsub_subtyp_helper : forall {Γ M M'}, {{ Γ M M' }} -> forall {Δ}, {{ Δ Γ }} -> {{ Δ M M' }}.
+  Proof with mautosolve.
+    all: inversion_clear 1;
+      (on_all_hyp: gen_ctxsub_helper_IH ctxsub_exp_helper ctxsub_exp_eq_helper ctxsub_sub_helper ctxsub_sub_eq_helper ctxsub_subtyp_helper);
+      clear ctxsub_exp_helper ctxsub_exp_eq_helper ctxsub_sub_helper ctxsub_sub_eq_helper ctxsub_subtyp_helper;
+      intros * HΓΔ; destruct (presup_ctx_sub HΓΔ); mauto 4;
+      try (rename B into C); try (rename B' into C'); try (rename A0 into B); try (rename A' into B').
+
+ +
+ctxsub_exp_helper & ctxsub_exp_eq_helper recursion cases +
+
+    1,8-10: assert {{ Δ, Γ, }} by (econstructor; mautosolve);
+    assert {{ Δ, B : Type@i }} by eauto; econstructor...
+
+ +
+ctxsub_exp_helper & ctxsub_exp_eq_helper function cases +
+
+    1-3,7-11: assert {{ Δ B : Type@i }} by eauto; assert {{ Δ, B Γ, B }} by mauto;
+    try econstructor...
+
+ +
+equality type case +
+
+    2,4:idtac...
+ +
+
+ +
+ctxsub_exp_helper & ctxsub_exp_eq_helper variable cases +
+
+    1,5: assert (exists B, {{ #x : B Δ }} /\ {{ Δ B A }}); destruct_conjs; mautosolve 4.
+
+ +
+ctxsub_sub_helper & ctxsub_sub_eq_helper weakening cases +
+
+    5,6: inversion_clear HΓΔ; econstructor; mautosolve 4.
+ +
+
+ +
+eqrec related cases +
+
+    1-3:assert {{ Δ, B Γ, B }} by mauto;
+      assert {{ Γ, B B[Wk] : Type@i }} by mauto;
+      assert {{ Δ, B B[Wk] : Type@i }} by mauto;
+      assert {{ Δ, B, B[Wk] Γ, B, B[Wk] }} by (econstructor; mauto 4);
+      assert {{ Γ, B, B[Wk] Eq (B[Wk][Wk]) #1 #0 : Type@i }} by (econstructor; mauto 4);
+      assert {{ Δ, B, B[Wk] Eq (B[Wk][Wk]) #1 #0 : Type@i }} by (econstructor; mauto 4);
+      assert {{ Δ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 }} by mauto;
+      econstructor; mauto 2.
+ +
+    -
+ +
+ctxsub_exp_eq_helper variable case +
+
+      inversion_clear HΓΔ as [|Δ0 ? ? C'].
+      assert (exists D, {{ #x : D Δ0 }} /\ {{ Δ0 D B }}) as [D [i0 ?]] by mauto.
+      destruct_conjs.
+      assert {{ Δ0, C' }} by mauto.
+      assert {{ Δ0, C' D[Wk] B[Wk] }}...
+    - eapply wf_subtyp_pi with (i := i); firstorder mauto 4.
+  Qed.
+ +
+  Corollary ctxsub_exp : forall {Γ Δ M A}, {{ Δ Γ }} -> {{ Γ M : A }} -> {{ Δ M : A }}.
+  Proof.
+    eauto using ctxsub_exp_helper.
+  Qed.
+ +
+  Corollary ctxsub_exp_eq : forall {Γ Δ M M' A}, {{ Δ Γ }} -> {{ Γ M M' : A }} -> {{ Δ M M' : A }}.
+  Proof.
+    eauto using ctxsub_exp_eq_helper.
+  Qed.
+ +
+  Corollary ctxsub_sub : forall {Γ Δ σ Γ'}, {{ Δ Γ }} -> {{ Γ s σ : Γ' }} -> {{ Δ s σ : Γ' }}.
+  Proof.
+    eauto using ctxsub_sub_helper.
+  Qed.
+ +
+  Corollary ctxsub_sub_eq : forall {Γ Δ σ σ' Γ'}, {{ Δ Γ }} -> {{ Γ s σ σ' : Γ' }} -> {{ Δ s σ σ' : Γ' }}.
+  Proof.
+    eauto using ctxsub_sub_eq_helper.
+  Qed.
+ +
+  Corollary ctxsub_subtyp : forall {Γ Δ A B}, {{ Δ Γ }} -> {{ Γ A B }} -> {{ Δ A B }}.
+  Proof.
+    eauto using ctxsub_subtyp_helper.
+  Qed.
+ +
+  #[export]
+  Hint Resolve ctxsub_exp ctxsub_exp_eq ctxsub_sub ctxsub_sub_eq ctxsub_subtyp : mcltt.
+End ctxsub_judg.
+ +
+Export ctxsub_judg.
+ +
+Lemma wf_ctx_sub_trans : forall Γ0 Γ1,
+    {{ Γ0 Γ1 }} ->
+    forall Γ2,
+    {{ Γ1 Γ2 }} ->
+    {{ Γ0 Γ2 }}.
+Proof.
+  induction 1; intros; progressive_inversion; [constructor |].
+  eapply wf_ctx_sub_extend with (i := max i i0);
+    mauto 3 using lift_exp_max_left, lift_exp_max_right.
+Qed.
+ +
+#[export]
Hint Resolve wf_ctx_sub_trans : mcltt.
+ +
+#[export]
+Instance wf_ctx_sub_trans_ins : Transitive wf_ctx_sub.
+Proof. eauto using wf_ctx_sub_trans. Qed.
+ +
+Add Parametric Morphism : wf_exp
+  with signature wf_ctx_sub --> eq ==> eq ==> Basics.impl as ctxsub_exp_morphism.
+Proof.
+  cbv. intros. mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_exp_eq
+  with signature wf_ctx_sub --> eq ==> eq ==> eq ==> Basics.impl as ctxsub_exp_eq_morphism.
+Proof.
+  cbv. intros. mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_sub
+  with signature wf_ctx_sub --> eq ==> eq ==> Basics.impl as ctxsub_sub_morphism.
+Proof.
+  cbv. intros. mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_sub_eq
+  with signature wf_ctx_sub --> eq ==> eq ==> eq ==> Basics.impl as ctxsub_sub_eq_morphism.
+Proof.
+  cbv. intros. mauto 3.
+Qed.
+ +
+Add Parametric Morphism : wf_subtyp
+  with signature wf_ctx_sub --> eq ==> eq ==> Basics.impl as ctxsub_subtyp_morphism.
+Proof.
+  cbv. intros. mauto 3.
+Qed.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.Presup.html b/ext/prop-eq/Mcltt.Core.Syntactic.Presup.html new file mode 100644 index 00000000..aca2de74 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.Presup.html @@ -0,0 +1,1506 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.Presup

+ +
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export CtxEq.
+Import Syntax_Notations.
+ +
+#[local]
+Ltac gen_presup_ctx H :=
+  match type of H with
+  | {{ ~?Γ ~?Δ }} =>
+      let := fresh "HΓ" in
+      let := fresh "HΔ" in
+      pose proof presup_ctx_eq H as [ ]
+  | {{ ~?Γ ~?Δ }} =>
+      let := fresh "HΓ" in
+      let := fresh "HΔ" in
+      pose proof presup_ctx_sub H as [ ]
+  end.
+ +
+#[local]
+Ltac gen_presup_IH presup_exp_eq presup_sub_eq presup_subtyp H :=
+  match type of H with
+  | {{ ~?Γ ~?M ~?N : ~?A }} =>
+      let := fresh "HΓ" in
+      let i := fresh "i" in
+      let HM := fresh "HM" in
+      let HN := fresh "HN" in
+      let HAi := fresh "HAi" in
+      pose proof presup_exp_eq _ _ _ _ H as [ [HM [HN [i HAi]]]]
+ | {{ ~?Γ s ~ ~: ~?Δ }} =>
+      let := fresh "HΓ" in
+      let Hσ := fresh "Hσ" in
+      let Hτ := fresh "Hτ" in
+      let := fresh "HΔ" in
+      pose proof presup_sub_eq _ _ _ _ H as [ [Hσ [Hτ ]]]
+ | {{ ~?Γ ~?M ~?N }} =>
+      let := fresh "HΓ" in
+      let i := fresh "i" in
+      let HM := fresh "HM" in
+      let HN := fresh "HN" in
+      pose proof presup_subtyp _ _ _ H as [ [i [HM HN]]]
+ | {{ ~?Γ ~?M : ~?A }} =>
+      let := fresh "HΓ" in
+      let i := fresh "i" in
+      let HAi := fresh "HAi" in
+      pose proof presup_exp H as [ [i HAi]]
+ | {{ ~?Γ s ~: ~?Δ }} =>
+      let := fresh "HΓ" in
+      let := fresh "HΔ" in
+      pose proof presup_sub H as [ ]
+  | _ => gen_presup_ctx H
+  end.
+ +
+Lemma presup_exp_eq : forall {Γ M M' A}, {{ Γ M M' : A }} -> {{ Γ }} /\ {{ Γ M : A }} /\ {{ Γ M' : A }} /\ exists i, {{ Γ A : Type@i }}
+with presup_sub_eq : forall {Γ Δ σ σ'}, {{ Γ s σ σ' : Δ }} -> {{ Γ }} /\ {{ Γ s σ : Δ }} /\ {{ Γ s σ' : Δ }} /\ {{ Δ }}
+with presup_subtyp : forall {Γ M M'}, {{ Γ M M' }} -> {{ Γ }} /\ exists i, {{ Γ M : Type@i }} /\ {{ Γ M' : Type@i }}.
+Proof with mautosolve 4.
+  1: set (WkWksucc := {{{ WkWk ,, succ #1 }}}).
+  all: inversion_clear 1; (on_all_hyp: gen_presup_IH presup_exp_eq presup_sub_eq presup_subtyp);
+    clear presup_exp_eq presup_sub_eq presup_subtyp;
+    repeat split; mauto 4;
+    try (rename B into C); try (rename B' into C'); try (rename A0 into B); try (rename A' into B');
+    try (rename N into L); try (rename N' into L');
+    try (rename M0 into N); try (rename MZ into NZ); try (rename MS into NS);
+    try (rename M'0 into N'); try (rename MZ' into NZ'); try (rename MS' into NS');
+    try (rename M' into N').
+ +
+
+ +
+presup_exp_eq cases +
+
+  - assert {{ Γ s Id ,, N Id ,, N' : Γ, }} by mauto 4.
+    assert {{ Γ B[Id ,, N] B[Id ,, N'] : Type@i }} by mauto 3.
+    assert {{ Γ B[Id ,, N] B'[Id ,, N'] : Type@i }} by mauto 4.
+    assert {{ Γ NZ' : B'[Id ,, zero] }} by (eapply wf_conv; mauto 3).
+    assert {{ Γ, , B NS' : B'[WkWksucc] }} by (eapply wf_conv; mauto 3).
+    assert {{ Γ, , B' NS' : B'[WkWksucc] }} by mauto 4.
+    assert {{ Γ rec N' return B' | zero -> NZ' | succ -> NS' end : B'[Id ,, N'] }} by mauto 3.
+    eapply wf_conv...
+ +
+  - assert {{ Γ B[(Id,,N)][σ] B[(Id,,N)σ] : Type@i }} by mauto 3.
+    assert {{ Γ s (Id,,N)σ σ,,N[σ] : Δ, }} by mauto 3.
+    assert {{ Γ B[(Id,,N)σ] B[σ,,N[σ]] : Type@i }} by mauto 4.
+    eapply wf_conv...
+ +
+  - assert {{ Γ s Id,,N[σ] : Γ, }} by mauto 4.
+    assert {{ Γ, s q σ : Δ, }} by mauto 2.
+    assert {{ Γ, B[q σ] : Type@i }} by mauto 2.
+    assert {{ Γ B[q σ][(Id,,N[σ])] B[q σ(Id,,N[σ])] : Type@i }} by mauto 2.
+    assert {{ Γ s q σ(Id,,N[σ]) σ,,N[σ] : Δ, }} by mauto 3.
+    assert {{ Γ B[q σ(Id,,N[σ])] B[σ,,N[σ]] : Type@i }} by mauto 3.
+    assert {{ Γ B[q σ][Id,,N[σ]] B[σ,,N[σ]] : Type@i }} by mauto 3.
+    assert {{ Γ NZ[σ] : B[Id ,, zero][σ] }} by mauto 3.
+    assert {{ Γ [σ] : Type@0 }} by mauto 3.
+    assert {{ Γ zero : [σ] }} by mauto 3.
+    assert {{ Γ s q σ(Id ,, zero) σ ,, zero : Δ, }} by mauto 3.
+    assert {{ Γ s σ Idσ : Δ }} by mauto 3.
+    assert {{ Γ s σ ,, zero Idσ ,, zero[σ] : Δ, }} by mauto 4.
+    assert {{ Γ s Idσ ,, zero[σ] (Id ,, zero)σ : Δ, }} by mauto.
+    assert {{ Γ s Id ,, zero : Γ, }} by mauto 2.
+    assert {{ Γ s q σ(Id ,, zero) (Id ,, zero)σ : Δ, }} by mauto 3.
+    assert {{ Γ B[q σ(Id ,, zero)] B[(Id ,, zero)σ] : Type@i }} by mauto 3.
+    assert {{ Γ B[q σ][Id ,, zero] B[Id ,, zero][σ] : Type@i }} by mauto 3.
+    assert {{ Γ NZ[σ] : B[q σ][Id ,, zero] }} by mauto 4.
+    set (Γ' := {{{ Γ, , B[q σ] }}}).
+    assert {{ Γ' s q (q σ) : Δ, , B }} by mauto 2.
+    assert {{ Γ' s q σWkWksucc WkWksuccq (q σ) : Δ, }} by mauto 2.
+    assert {{ Γ' s WkWksucc : Γ, }} by mauto 2.
+    assert {{ Γ' B[WkWksucc][q (q σ)] B[q σ][WkWksucc] : Type@i }} by mauto 4.
+    assert {{ Γ' NS[q (q σ)] : B[q σ][WkWksucc] }} by mauto 4.
+    eapply wf_conv...
+ +
+  - eexists...
+ +
+  - set (recN := {{{ rec N return B | zero -> NZ | succ -> NS end }}}).
+    set (IdNrecN := {{{ Id ,, N ,, recN }}}).
+    assert {{ Γ : Type@0 }} by mauto 3.
+    assert {{ Γ recN : B[Id ,, N] }} by mauto 4.
+    assert {{ Γ, s Wk : Γ }} by mauto 2.
+    assert {{ Γ, , B s Wk : Γ, }} by mauto 2.
+    assert {{ Γ, , B s WkWk : Γ }} by mauto 2.
+    assert {{ Γ s WkWksuccIdNrecN (WkWk)IdNrecN ,, (succ #1)[IdNrecN] : Γ, }}
+      by (eapply sub_eq_extend_compose_nat; mauto 3).
+    assert {{ Γ s IdNrecN : Γ, , B }} by mauto 3.
+    assert {{ Γ s (WkWk)IdNrecN : Γ }} by mauto 2.
+    assert {{ Γ s (WkWk)IdNrecN Wk(WkIdNrecN) : Γ }} by mauto 2.
+    assert {{ Γ s Id,,N : Γ, }} by mauto 2.
+    assert {{ Γ s Wk(WkIdNrecN) Wk(Id,,N) : Γ }} by mauto 4.
+    assert {{ Γ s (WkWk)IdNrecN Id : Γ }} by mauto 4.
+    assert {{ Γ #1[IdNrecN] #0[Id ,, N] : }} by mauto 3.
+    assert {{ Γ #1[IdNrecN] N : }} by mauto 4.
+    assert {{ Γ succ #1[IdNrecN] succ N : }} by mauto 2.
+    assert {{ Γ (succ #1)[IdNrecN] succ N : }} by mauto 4.
+    assert {{ Γ s (WkWk)IdNrecN ,, (succ #1)[IdNrecN] Id ,, succ N : Γ , }} by mauto 2.
+    assert {{ Γ s WkWksuccIdNrecN : Γ, }} by mauto 3.
+    assert {{ Γ s Id,,succ N : Γ, }} by mauto 3.
+    assert {{ Γ s WkWksuccIdNrecN Id ,, succ N : Γ , }} by mauto 2.
+    assert {{ Γ B[WkWksuccIdNrecN] B[Id,,succ N] : Type@i }} by mauto 2.
+    enough {{ Γ B[WkWksucc][IdNrecN] B[Id,,succ N] : Type@i }}...
+ +
+  - eexists...
+ +
+  - mauto.
+ +
+  - mauto.
+ +
+  - assert {{ Γ B : Type@(max i i0) }} by mauto 2 using lift_exp_max_left.
+    assert {{ Γ B B' : Type@(max i i0) }} by mauto 2 using lift_exp_eq_max_left.
+    assert {{ Γ, B C : Type@(max i i0) }} by mauto 2 using lift_exp_max_right.
+    assert {{ Γ Π B C Π B' C : Type@(max i i0) }} by mauto 3.
+    assert {{ Γ, B' N' : C }} by mauto 4.
+    enough {{ Γ λ B' N' : Π B' C }}...
+ +
+  - assert {{ Γ B : Type@(max i i0) }} by mauto 2 using lift_exp_max_left.
+    assert {{ Γ, B C : Type@(max i i0) }} by mauto 2 using lift_exp_max_right...
+ +
+  - assert {{ Δ B : Type@(max i i0) }} by mauto 2 using lift_exp_max_left.
+    assert {{ Δ, B C : Type@(max i i0) }} by mauto 2 using lift_exp_max_right.
+    assert {{ Γ B[σ] : Type@(max i i0) }} by mauto 2.
+    assert {{ Γ, B[σ] C[q σ] : Type@(max i i0) }} by mauto 3.
+    assert {{ Γ Π B[σ] C[q σ] : Type@(max i i0) }} by mauto 2.
+    assert {{ Γ Π B[σ] C[q σ] Π B[σ] C[q σ] : Type@(max i i0) }} by mauto 2.
+    assert {{ Γ, B[σ] N[q σ] : C[q σ] }} by mauto 3.
+    assert {{ Γ λ B[σ] N[q σ] : Π B[σ] C[q σ] }} by mauto 3.
+    eapply wf_conv...
+ +
+  - assert {{ Δ B : Type@(max i i0) }} by mauto 2 using lift_exp_max_left.
+    assert {{ Δ, B C : Type@(max i i0) }} by mauto 2 using lift_exp_max_right.
+    enough {{ Δ Π B C : Type@(max i i0) }}...
+ +
+  - assert {{ Γ s Id Id : Γ }} by mauto 2.
+    assert {{ Γ B B[Id] : Type@i }} by mauto 3.
+    assert {{ Γ L L' : B[Id] }} by mauto 4.
+    assert {{ Γ s Id ,, L Id ,, L' : Γ, B }} by mauto 2.
+    assert {{ Γ C[Id ,, L] C[Id ,, L'] : Type@i }} by mauto 3.
+    eapply wf_conv...
+ +
+  - assert {{ Γ N[σ] : Π B[σ] C[q σ] }} by (eapply wf_conv; mauto).
+    assert {{ Δ L : B[Id] }} by mauto 4.
+    assert {{ Γ s (Id ,, L)σ Idσ ,, L[σ] : Δ, B }} by mauto 3.
+    assert {{ Γ s (Id ,, L)σ σ ,, L[σ] : Δ, B }} by mauto 3.
+    assert {{ Δ s Id ,, L : Δ, B }} by mauto 3.
+    assert {{ Γ s (Id ,, L)σ : Δ, B }} by mauto 3.
+    assert {{ Γ C[(Id ,, L)σ] C[σ ,, L[σ]] : Type@i }} by mauto 2.
+    assert {{ Γ C[Id ,, L][σ] C[σ ,, L[σ]] : Type@i }} by mauto 3.
+    eapply wf_conv...
+ +
+  - assert {{ Γ B[σ] : Type@i }} by mauto 2.
+    assert {{ Γ, B[σ] s q σ : Δ, B }} by mauto 2.
+    assert {{ Γ, B[σ] C[q σ] : Type@i }} by mauto 2.
+    assert {{ Γ N[σ] : Π B[σ] C[q σ] }} by (eapply wf_conv; mauto 2).
+    assert {{ Γ L[σ] : B[σ] }} by mauto 2.
+    assert {{ Γ s q σ(Id ,, L[σ]) σ ,, L[σ] : Δ, B }} by mauto 2.
+    assert {{ Γ s Id ,, L[σ] : Γ, B[σ] }} by mauto 2.
+    assert {{ Γ s q σ(Id ,, L[σ]) : Δ, B }} by mauto 2.
+    assert {{ Γ C[q σ(Id ,, L[σ])] C[σ ,, L[σ]] : Type@i }} by mauto 2.
+    assert {{ Γ C[q σ][(Id ,, L[σ])] C[σ ,, L[σ]] : Type@i }} by mauto 3.
+    eapply wf_conv...
+ +
+  - eexists...
+ +
+  - set (Id0 := {{{ Id ,, #0 }}}).
+    assert {{ Γ, B s Wk : Γ }} by mauto 2.
+    assert {{ Γ, B B[Wk] : Type@i }} by mauto 2.
+    assert {{ Γ, B, B[Wk] s Wk : Γ, B }} by mauto 3.
+    assert {{ Γ, B, B[Wk] s q Wk : Γ, B }} by mauto 2.
+    assert {{ Γ, B, B[Wk] C[q Wk] : Type@i }} by mauto 2.
+    assert {{ Γ, B M[Wk] : (Π B C)[Wk] }} by mauto 2.
+    assert {{ Γ, B M[Wk] : Π B[Wk] C[q Wk] }} by mauto 4.
+    assert {{ Γ, B #0 : B[Wk] }} by mauto 2.
+    assert {{ Γ, B s Id0 : Γ, B, B[Wk] }} by mauto 2.
+    assert {{ Γ, B M[Wk] #0 : C[q Wk][Id0] }} by mauto 2.
+    assert {{ Γ, B M[Wk] #0 : C[q Wk Id0] }} by (eapply wf_conv; mauto 3).
+    assert {{ Γ, B B[Wk][Id] B[Wk] : Type@i }} by mauto 2.
+    assert {{ Γ, B #0 : B[Wk][Id] }} by mauto 2.
+    assert {{ Γ, B, B[Wk] s WkWk : Γ }} by mauto 2.
+    assert {{ Γ, B s (WkWk)Id0 : Γ }} by mauto 2.
+    assert {{ Γ, B s Id WkId0 : Γ, B }} by mauto 3.
+    assert {{ Γ, B s WkId Wk(WkId0) : Γ }} by mauto 3.
+    assert {{ Γ, B s WkId (WkWk)Id0 : Γ }} by mauto 4.
+    assert {{ Γ, B, B[Wk] #0 : B[Wk][Wk] }} by mauto 3.
+    assert {{ Γ, B, B[Wk] #0 : B[WkWk] }} by (eapply wf_conv; mauto 3).
+    assert {{ Γ, B s q Wk Id0 (WkWk)Id0 ,, #0[Id0] : Γ, B }} by mauto 3.
+    assert {{ Γ, B s (WkWk)Id0 Wk(WkId0) : Γ }} by mauto 2.
+    assert {{ Γ, B s (WkWk)Id0 WkId : Γ }} by mauto 2.
+    assert {{ Γ, B #0[Id0] #0 : B[Wk][Id] }} by mauto 3.
+    assert {{ Γ, B #0 #0[Id] : B[Wk][Id] }} by mauto 3.
+    assert {{ Γ, B #0[Id0] #0[Id] : B[Wk][Id] }} by mauto 2.
+    assert {{ Γ, B #0[Id0] #0[Id] : B[WkId] }} by (eapply wf_exp_eq_conv; mauto 4).
+    assert {{ Γ, B B[WkId] B[(WkWk)Id0] : Type@i }} by mauto 3.
+    assert {{ Γ, B #0[Id0] #0[Id] : B[(WkWk)Id0] }} by mauto 3.
+    assert {{ Γ, B s (WkWk)Id0 ,, #0[Id0] WkId ,, #0[Id] : Γ, B }} by mauto 2.
+    assert {{ Γ, B s WkId ,, #0[Id] Id : Γ, B }} by mauto 4.
+    assert {{ Γ, B s q Wk Id0 Id : Γ, B }} by mauto 3.
+    assert {{ Γ, B C[q Wk Id0] C[Id] : Type@i }} by mauto 3.
+    enough {{ Γ, B M[Wk] #0 : C }}...
+ +
+  - econstructor...
+  - eapply wf_conv...
+  - assert {{ Γ s σ ,, M1[σ] : Δ, B}} by mauto.
+    assert {{ Δ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Δ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][σ ,, M1[σ]] : Type@i}} by mauto.
+    assert {{ Γ B[Wk][σ ,, M1[σ]] B[σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk (σ,,M1[σ])]}}};
+        [mauto | eapply exp_eq_sub_cong_typ2'; mauto].
+    }
+    assert {{ Γ M2[σ] : B[Wk][σ ,, M1[σ]]}}.
+    {
+      eapply wf_conv with (A:={{{B[σ]}}});
+        mauto 2.
+    }
+    assert {{ Γ s σ ,, M1[σ] ,, M2[σ] : Δ, B, B[Wk]}} by mauto 4.
+    assert {{ Δ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+ +
+    assert {{Γ B[Wk][Wk][σ,,M1[σ],,M2[σ]] B[σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk][Wk (σ,,M1[σ],,M2[σ])]}}};
+        [mauto 4 | transitivity {{{B[Wk][σ,,M1[σ]]}}}];
+        [| transitivity {{{B[Wk (σ,,M1[σ])]}}};
+           [mauto 4 | ]];
+        eapply exp_eq_sub_cong_typ2';
+        mauto 4.
+    }
+
+    eapply wf_conv;
+      [econstructor | |]; mauto 3.
+    + eapply exp_sub_typ; try eassumption.
+      econstructor; mauto 2.
+      eapply wf_conv; mauto 2.
+      transitivity {{{Eq (B[σ]) (M1[σ]) (M2[σ])}}};
+        [mauto 4 | symmetry].
+      etransitivity;
+        [econstructor; mauto |].
+ +
+      econstructor; eauto.
+      * eapply wf_exp_eq_conv; mauto 4 using sub_lookup_var1.
+      * eapply wf_exp_eq_conv;
+          [eapply sub_lookup_var0 with (B:=B)| |];
+          mauto 4.
+ +
+    + assert {{ Δ s Id ,, M1 : Δ, B}} by mauto 4.
+      assert {{ Δ , B B[Wk] : Type@i }} by mauto 4.
+      assert {{ Δ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+      assert {{ Δ B[Wk][Id,,M1] B : Type@i }}.
+      {
+        transitivity {{{B[Wk (Id,,M1)]}}};
+          [| transitivity {{{B[Id]}}}];
+          mauto 3.
+        eapply exp_eq_sub_cong_typ2'; mauto 3.
+      }
+      assert {{ Δ s Id ,, M1 ,, M2 : Δ, B , B[Wk]}}.
+      {
+        econstructor; mauto 3.
+        eapply wf_conv; mauto 2.
+      }
+      assert {{ Δ B[Wk][Wk][Id ,, M1 ,, M2] B : Type@i }}.
+      {
+        transitivity {{{B[Wk][Wk (Id ,, M1 ,, M2)]}}};
+          [| transitivity {{{B[Wk][Id ,, M1]}}}];
+          mauto 4.
+        eapply exp_eq_sub_cong_typ2'; mauto 4.
+        eapply wf_sub_eq_p_extend; mauto 4.
+      }
+      assert {{ Δ L : (Eq (B[Wk][Wk]) #1 #0) [ Id ,, M1 ,, M2]}}.
+      {
+        eapply wf_conv; mauto 2.
+        symmetry.
+        etransitivity.
+        - eapply wf_exp_eq_eq_sub; mauto.
+        - econstructor; mauto 3.
+          + eapply wf_exp_eq_conv;
+              [eapply id_sub_lookup_var1 with (B:=B) | |];
+              mauto 4.
+          + eapply wf_exp_eq_conv;
+              [eapply id_sub_lookup_var0 with (B:=B) | |];
+              mauto 4.
+      }
+      assert {{ Δ s Id ,, M1 ,, M2 ,, L : Δ, B , B[Wk], Eq (B[Wk][Wk]) #1 #0}} by mauto 4.
+ +
+      transitivity {{{ C[(Id,,M1,,M2,,L) σ ] }}};
+        [eapply exp_eq_sub_compose_typ | eapply exp_eq_sub_cong_typ2'];
+        mauto 3.
+ +
+      transitivity {{{(Id,,M1,,M2) σ ,, L[σ]}}};
+        [econstructor; mauto 3 |].
+      econstructor; mauto 3.
+      * transitivity {{{(Id,,M1) σ ,, M2[σ]}}}.
+        econstructor; mauto 4.
+        econstructor; mauto 3.
+        eapply exp_eq_refl.
+        eapply wf_conv; mauto 3.
+        eapply exp_eq_sub_cong_typ2'; mauto 3.
+      * eapply exp_eq_refl.
+        eapply wf_conv; mauto 3.
+ +
+  - assert {{ Δ s Id ,, M1 : Δ, B}} by mauto 4.
+    assert {{ Δ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Δ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][σ ,, M1[σ]] : Type@i}} by mauto.
+    assert {{ Γ B[σ] : Type @ i }} by mauto 3.
+    assert {{ Γ M1[σ] : B[σ] }} by mauto 3.
+    assert {{ Γ M2[σ] : B[σ] }} by mauto 3.
+    assert {{ Γ B[Wk][σ ,, M1[σ]] B[σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk (σ,,M1[σ])]}}};
+        [| eapply exp_eq_sub_cong_typ2']; mauto 4.
+    }
+    assert {{ Γ M2[σ] : B[Wk][σ ,, M1[σ]]}} by mauto 3.
+    assert {{ Γ s σ,, M1[σ] : Δ,B}} by mauto 3.
+    assert {{ Γ s σ ,, M1[σ] ,, M2[σ] : Δ, B, B[Wk]}} by mauto 3.
+    assert {{ Δ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+ +
+    assert {{Γ B[Wk][Wk][σ,,M1[σ],,M2[σ]] B[σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk][Wk (σ,,M1[σ],,M2[σ])]}}};
+        [mauto 4 | transitivity {{{B[Wk][σ,,M1[σ]]}}}];
+        mauto 2.
+      eapply exp_eq_sub_cong_typ2';
+        mauto 4.
+    }
+    assert {{ Γ L[σ] : (Eq B M1 M2)[σ] }} by mauto 3.
+    assert {{ Γ L[σ] : Eq (B[σ]) (M1[σ]) (M2[σ]) }} by (eapply wf_conv; mauto 3).
+    assert {{ Γ #1[σ,,M1[σ],,M2[σ]] M1[σ] : B[Wk][Wk][σ,,M1[σ],,M2[σ]] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [eapply sub_lookup_var1 with (B:=B) | |];
+        mauto 4.
+    }
+    assert {{ Γ #0[σ,,M1[σ],,M2[σ]] M2[σ] : B[Wk][Wk][σ,,M1[σ],,M2[σ]] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [eapply sub_lookup_var0 with (B:=B) | |];
+        mauto 4.
+    }
+    assert {{ Γ L[σ] : (Eq (B[Wk][Wk]) #1 #0)[σ,,M1[σ],,M2[σ]] }}.
+    {
+      eapply wf_conv; mauto 2.
+      symmetry.
+      etransitivity.
+      - eapply wf_exp_eq_eq_sub; mauto.
+      - econstructor; mauto 3.
+    }
+    assert {{ Γ s σ,,M1[σ],,M2[σ],,L[σ] : Δ,B,B[Wk],Eq (B[Wk][Wk]) #1 #0}} by mauto 3.
+    assert {{Γ, B[σ] s q σ : Δ, B}} by mauto 4.
+    assert {{Γ, B[σ] B[σ][Wk] : Type@i}} by mauto 4.
+    assert {{Γ, B[σ], B[σ][Wk] B[σ][Wk][Wk] : Type@i}} by mauto.
+    assert {{Γ, B[σ], B[σ][Wk] Eq (B[σ][Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 3; mauto).
+    assert {{Γ, B[σ] B[Wk][q σ] B[σ][Wk] : Type@i}}.
+    {
+      transitivity {{{B[Wk q σ]}}};
+        [mauto 3 | transitivity {{{B[σ Wk]}}}];
+        [eapply exp_eq_sub_cong_typ2'; mauto 3 | mauto].
+    }
+    assert {{ Γ, B[σ], B[Wk][q σ] Γ, B[σ], B[σ][Wk]}} by (econstructor; mauto 3).
+    assert {{Γ, B[σ], B[σ][Wk] s q (q σ) : Δ, B, B[Wk]}}.
+    {
+      eapply ctxeq_sub; [| eapply sub_q]; mauto 2.
+    }
+    assert {{Γ, B[σ],B[σ][Wk] B[Wk][q σ Wk] : Type@i}} by mauto.
+    assert {{Γ, B[σ],B[σ][Wk] B[Wk][q σ Wk] B[σ][Wk][Wk] : Type@i}}.
+    {
+      transitivity {{{B[Wk][q σ][Wk]}}};
+        [mauto |].
+      eapply exp_eq_sub_cong_typ1; mauto 3.
+    }
+    assert {{Γ, B[σ],B[σ][Wk] B[Wk][Wk][q (q σ)] B[σ][Wk][Wk] : Type@i}}.
+    {
+      transitivity {{{B[Wk][Wk q (q σ)]}}};
+        [mauto 4| transitivity {{{B[Wk][q σ Wk]}}}];
+        [eapply exp_eq_sub_cong_typ2'; mauto 4 | trivial].
+    }
+    assert {{Γ, B[σ], B[σ][Wk] #1 : B[σ][Wk][Wk]}} by mauto.
+    assert {{Γ, B[σ], B[σ][Wk] Eq (B[σ][Wk][Wk]) #0 #0 : Type@i}} by (econstructor; mauto 3).
+    assert {{Γ, B[σ], B[σ][Wk] (Eq (B[Wk][Wk]) #1 #0)[q (q σ)] Eq (B[σ][Wk][Wk]) #1 #0 : Type@i}}.
+    {
+      transitivity {{{Eq (B[Wk][Wk][q (q σ)]) (#1[q (q σ)]) (#0[q (q σ)])}}};
+        [econstructor; mauto 4 |].
+      econstructor; mauto 2.
+      - eapply wf_exp_eq_conv;
+          [eapply ctxeq_exp_eq;[eassumption | eapply exp_eq_var_1_sub_q_sigma] | |];
+          mauto 2.
+      - eapply wf_exp_eq_conv.
+        econstructor; [mauto 4 | eauto | eapply wf_conv; mauto].
+        + mauto 2.
+        + mauto 4.
+    }
+    assert {{Γ, B[σ], B[σ][Wk], Eq (B[σ][Wk][Wk]) #1 #0 s q (q (q σ)) : Δ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0}}.
+    {
+      eapply ctxeq_sub; [| eapply sub_q]; mauto 2.
+      econstructor; mauto 3.
+    }
+    assert {{Γ, B[σ] s Id,,#0 : Γ, B[σ], B[σ][Wk]}} by mauto 4.
+    assert {{Γ, B[σ] B[σ][Wk][Wk][Id,,#0] B[σ][Wk] : Type@i}}.
+    {
+      transitivity {{{B[σ][Wk][Wk (Id,,#0)]}}};
+        [mauto 4 |].
+      transitivity {{{B[σ][Wk][Id]}}};
+        [| mauto 3].
+      eapply exp_eq_sub_cong_typ2'; mauto 4.
+    }
+
+    assert {{Γ, B[σ] s Id,,#0,,refl (B[σ][Wk]) #0 : Γ, B[σ], B[σ][Wk], Eq (B[σ][Wk][Wk]) #1 #0}}.
+    {
+      econstructor; mauto 3.
+      eapply wf_conv;
+        [econstructor | |];
+        mauto 2.
+      - mauto 3.
+      - symmetry.
+        etransitivity; [econstructor; mauto 3 |].
+        econstructor; eauto.
+        + eapply wf_exp_eq_conv; mauto 2.
+          transitivity {{{#0[Id]}}}.
+          * eapply wf_exp_eq_conv; [econstructor | |];
+              mauto 3.
+            mauto 4.
+          * eapply wf_exp_eq_conv; mauto 4.
+        + eapply wf_exp_eq_conv;
+            [econstructor | |].
+          * mauto 3.
+          * mauto 2.
+          * mauto 4.
+          * mauto 2.
+          * etransitivity; mauto 2.
+    }
+    assert {{Γ, B[σ] s q (q σ) (Id,,#0) q σ,,#0 : Δ, B, B[Wk]}}.
+    {
+      eapply sub_eq_q_sigma_id_extend;
+        mauto 2.
+      eapply wf_conv; mauto 3.
+    }
+    assert {{Γ, B[σ] #0 : B[σ][Wk][Wk][Id,,#0]}} by (eapply wf_conv; mauto 3).
+    assert {{Γ, B[σ] #0[Id,,#0] #0 : B[σ][Wk][Id]}} by (econstructor; mauto 3).
+    assert {{Γ, B[σ] #0[Id,,#0] #0 : B[σ][Wk]}} by mauto 3.
+    assert {{Γ, B[σ] #0[Id,,#0] #0 : B[σ][Wk][Wk][Id,,#0]}} by mauto 4.
+    assert {{Γ, B[σ] (Eq (B[σ][Wk][Wk]) #0 #0)[Id,,#0] Eq (B[σ][Wk]) #0 #0 : Type@i}}.
+    {
+      etransitivity; econstructor; mauto 3.
+    }
+    assert {{Γ, B[σ] s (q (q σ) Wk) (Id,,#0,,refl (B[σ][Wk]) #0) : Δ, B, B[Wk]}}.
+    {
+      econstructor; mauto 3.
+      econstructor; mauto 3.
+    }
+    assert {{Γ, B[σ] s (q (q σ) Wk) (Id,,#0,,refl (B[σ][Wk]) #0)
+                   q (q σ) (Id,,#0) : Δ, B, B[Wk]}}.
+    {
+      transitivity {{{q (q σ) (Wk (Id,,#0,,refl (B[σ][Wk]) #0))}}};
+        [mauto 4 |].
+      econstructor; mauto 3.
+      eapply wf_sub_eq_p_extend with (A:={{{Eq (B[σ][Wk][Wk]) #0 #0}}}); mauto 2.
+ +
+      eapply wf_conv;
+        [econstructor; mauto 3 | eapply exp_sub_typ; mauto 3 |].
+ +
+      symmetry.
+      etransitivity;
+        [econstructor; mauto 3 |].
+      econstructor; mauto 3.
+    }
+    assert {{Γ, B[σ] s (q (q σ) Wk) (Id,,#0,,refl (B[σ][Wk]) #0)
+                   q σ,,#0 : Δ, B, B[Wk]}} by mauto 4.
+    assert {{Γ, B[σ] B[σ][Wk][Wk][Id,,#0] B[Wk][q σ] : Type@i}} by mauto 3.
+    assert {{Γ, B[σ] B[Wk][Wk][q σ,,#0] B[Wk][q σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk][Wk (q σ,,#0)]}}};
+        [eapply exp_eq_sub_compose_typ; mauto 4 |].
+      symmetry.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+      symmetry.
+      mauto 4.
+    }
+    assert {{Γ, B[σ] s q σ,,#0 : Δ, B, B[Wk] }} by (econstructor; mauto 3).
+    assert {{Γ, B[σ] B[Wk][Wk][q σ,,#0] : Type@i}} by mauto 3.
+    assert {{Γ, B[σ] B[Wk][Wk][q σ,,#0] B[σ][Wk] : Type@i}} by mauto 4.
+    assert {{ Γ, B[σ] #0[q σ,,#0] # 0 : B[σ][Wk] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [econstructor | |];
+        mauto 2.
+      mauto 3.
+    }
+    assert {{ Γ, B[σ] #0[q σ,,#0] # 0 : B[Wk][Wk][q σ,,#0] }} by mauto 3.
+ +
+    assert {{ Γ, B[σ] s σ Wk : Δ }} by mauto 4.
+    assert {{ Γ, B[σ] # 0 : B[σ][Wk] }} by mauto 2.
+    assert {{ Γ, B[σ] B[σ][Wk] B[σ Wk] : Type@i }} by mauto 4.
+    assert {{ Γ, B[σ] # 0 : B[σ Wk] }} by mauto 3.
+ +
+    assert {{ Γ, B[σ] #1[q σ,,#0] # 0 : B[σ][Wk] }}.
+    {
+      eapply wf_exp_eq_conv with (A:={{{B[σ Wk]}}});
+        [eapply sub_lookup_var1; eauto | |];
+        mauto 2.
+    }
+    assert {{ Γ, B[σ] #1[q σ,,#0] # 0 : B[Wk][Wk][q σ,,#0] }} by mauto 3.
+ +
+    assert {{Γ, B[σ] s q (q (q σ)) (Id,,#0,,refl (B[σ][Wk]) #0)
+                   (q (q σ) (Id,,#0)),,refl (B[σ][Wk]) #0
+          : Δ, B, B[Wk], Eq (B[Wk][Wk]) # 1 # 0}}.
+    {
+      etransitivity;
+        [eapply wf_sub_eq_extend_compose; mauto 2; mauto 4 |].
+ +
+      - eapply wf_conv; mauto 3.
+        + mauto.
+        + symmetry.
+          transitivity {{{(Eq (B[Wk][Wk]) #1 #0)[q (q σ)][Wk]}}};
+            [mauto |].
+          eapply exp_eq_sub_cong_typ1; mauto 4.
+      - econstructor; mauto 3.
+ +
+        eapply wf_exp_eq_conv.
+        econstructor; mauto 3.
+        + eapply wf_conv; [econstructor | |]; mauto 3.
+        + eapply exp_sub_typ; mauto 3.
+        + etransitivity; eauto.
+          symmetry.
+          etransitivity; [| etransitivity].
+          * eapply exp_eq_sub_cong_typ2'; mauto 3.
+          * econstructor; mauto 4.
+          * econstructor; mauto 2.
+    }
+
+    assert {{ Δ, B, B[Wk]}} by mauto 3.
+    assert {{Δ, B, B[Wk] #0 : B[Wk][Wk]}} by mauto 4.
+    assert {{Δ, B, B[Wk] #1 : B[Wk][Wk]}} by mauto 4.
+    assert {{Γ, B[σ] B[Wk][Wk][q (q σ) (Id,,#0)] B[Wk][q σ] : Type@i}} by mauto 4.
+    assert {{Γ, B[σ] B[Wk][Wk][q (q σ) (Id,,#0)] B[σ][Wk] : Type@i}} by mauto 4.
+ +
+    assert {{ Γ, B[σ] #0[q (q σ) (Id,,#0)] # 0 : B[σ][Wk] }}.
+    {
+      transitivity {{{#0[q σ,,#0]}}}.
+      - symmetry.
+        eapply wf_exp_eq_conv;
+          [econstructor | |]; mauto 2.
+      - eauto.
+    }
+    assert {{ Γ, B[σ] #0[q (q σ) (Id,,#0)] # 0 : B[Wk][Wk][q (q σ) (Id,,#0)] }} by
+      (eapply wf_exp_eq_conv; mauto 3).
+ +
+    assert {{ Γ, B[σ] #1[q (q σ) (Id,,#0)] # 0 : B[σ][Wk] }}.
+    {
+      transitivity {{{#1[q σ,,#0]}}}.
+      - symmetry.
+        eapply wf_exp_eq_conv;
+          [econstructor | |]; mauto 2.
+      - eauto.
+    }
+    assert {{ Γ, B[σ] #1[q (q σ) (Id,,#0)] # 0 : B[Wk][Wk][q (q σ) (Id,,#0)] }} by
+      (eapply wf_exp_eq_conv; mauto 3).
+ +
+    assert {{Γ, B[σ] s q (q (q σ)) (Id,,#0,,refl (B[σ][Wk]) #0)
+                   q σ,,#0,,refl (B[σ][Wk]) #0 : Δ, B, B[Wk], Eq (B[Wk][Wk]) # 1 # 0}}.
+    {
+      etransitivity; eauto.
+      econstructor; mauto 3.
+      eapply exp_eq_refl.
+      eapply wf_conv; mauto 3.
+      symmetry.
+      etransitivity.
+      - econstructor; mauto 2.
+      - econstructor; mauto 2.
+    }
+
+    assert {{Γ, B[σ] s Id q σ : Δ, B}} by mauto 3.
+    assert {{Γ, B[σ] s Id q σ q σ : Δ, B}} by mauto 3.
+    assert {{Γ, B[σ] #0[q σ] #0 : B[σ Wk]}} by mauto 3.
+    assert {{Γ, B[σ] #0[q σ] #0 : B[σ][Wk]}} by mauto 3.
+    assert {{Γ, B[σ] #0[q σ] #0 : B[Wk][q σ]}} by mauto 4.
+    assert {{Γ, B[σ] s (Id,,#0) q σ : Δ, B, B[Wk]}} by (econstructor; mauto 3).
+    assert {{Γ, B[σ] s (Id,,#0) q σ q σ,,#0 : Δ, B, B[Wk]}}.
+    {
+      etransitivity.
+      - eapply wf_sub_eq_extend_compose; mauto 3.
+      - econstructor; mauto 3.
+        eapply wf_exp_eq_conv; mauto 2.
+        eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+
+    assert {{Δ, B B[Wk][Wk][Id,,#0] B[Wk] : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id,,#0)]}}}; [ |transitivity{{{B[Wk][Id]}}}].
+      - eapply exp_eq_sub_compose_typ; mauto 3.
+      - eapply exp_eq_sub_cong_typ2'; mauto 3.
+        econstructor; mauto 3.
+      - mauto 3.
+    }
+    assert {{Δ, B #0[Id ,, #0] #0 : B[Wk]}}.
+    {
+      eapply wf_exp_eq_conv;
+      [econstructor | |]; mauto 3.
+    }
+    assert {{Δ, B B[Wk][Wk][Id,,#0] : Type@i }} by (eapply exp_sub_typ; mauto 3).
+    assert {{Δ, B #0[Id ,, #0] #0 : B[Wk][Wk][Id,,#0]}} by (eapply wf_exp_eq_conv; mauto 2).
+    assert {{Δ, B #1[Id ,, #0] #0 : B[Wk]}}.
+    {
+      transitivity {{{#0[Id]}}}; mauto 3.
+      eapply wf_exp_eq_conv;
+        [econstructor | |]; mauto 3.
+      eapply wf_conv; mauto 3.
+      symmetry.
+      mauto 3.
+    }
+    assert {{Δ, B #1[Id ,, #0] #0 : B[Wk][Wk][Id,,#0]}} by (eapply wf_exp_eq_conv; mauto 2).
+ +
+    assert {{Δ, B refl (B[Wk]) #0 : (Eq (B[Wk][Wk]) #1 #0)[Id ,, #0]}}.
+    {
+      eapply wf_conv; mauto 3.
+      - mauto 4.
+      - symmetry.
+        etransitivity.
+        + econstructor; mauto 3.
+        + econstructor; mauto 3.
+    }
+
+    assert {{ Γ, B[σ] (Eq B[Wk] #0 #0)[q σ] Eq B[σ][Wk] #0 #0 : Type@i }}.
+    {
+      etransitivity;
+        [econstructor; mauto 2 |];
+        mauto 3.
+    }
+
+    assert {{ Γ, B[σ] B[Wk][Wk][(Id,,#0)q σ] B[σ][Wk] : Type@i }} by mauto 3.
+ +
+    assert {{ Γ, B[σ] #1[(Id,,#0)q σ] #0 : B[σ][Wk] }}.
+    {
+      transitivity {{{#1[q σ,,#0]}}};
+        [eapply wf_exp_eq_conv |];
+        mauto 3.
+    }
+    assert {{ Γ, B[σ] #1[(Id,,#0)q σ] #0 : B[Wk][Wk][(Id,,#0)q σ] }} by mauto 4.
+ +
+    assert {{ Γ, B[σ] #0[(Id,,#0)q σ] #0 : B[σ][Wk] }}.
+    {
+      transitivity {{{#0[q σ,,#0]}}};
+        [eapply wf_exp_eq_conv |];
+        mauto 3.
+    }
+    assert {{ Γ, B[σ] #0[(Id,,#0)q σ] #0 : B[Wk][Wk][(Id,,#0)q σ] }} by mauto 4.
+ +
+    assert {{ Γ, B[σ] (Eq B[Wk][Wk] #1 #0)[(Id,,#0)q σ] Eq B[σ][Wk] #0 #0 : Type@i }}.
+    {
+      etransitivity; econstructor; mauto 2.
+    }
+
+    assert {{Γ, B[σ] s (Id,,#0,,refl (B[Wk]) #0) q σ
+                   q σ,,#0,,refl (B[σ][Wk]) #0 : Δ, B, B[Wk], Eq (B[Wk][Wk]) # 1 # 0}}.
+    {
+      etransitivity.
+      - eapply wf_sub_eq_extend_compose; mauto 3.
+      - econstructor; mauto 2.
+        etransitivity.
+        + eapply wf_exp_eq_conv;
+            [eapply wf_exp_eq_refl_sub; mauto 3 |
+             eapply exp_sub_typ; mauto 3 |].
+          mauto 3.
+        + eapply wf_exp_eq_conv;
+            [econstructor | |];
+            mauto 2.
+          etransitivity; mauto 2.
+    }
+
+    assert {{ Δ, B s Id,,#0,,refl B[Wk] #0 : ((Δ, B), B[Wk]), Eq B[Wk][Wk] #1 #0 }} by mauto 4.
+ +
+    assert {{ Γ s Id,,M1[σ] : Γ,B[σ]}} by mauto 2.
+    assert {{ Γ B[σ][Wk][Id ,, M1[σ]] B[σ] : Type@i}}.
+    {
+      etransitivity;
+        [eapply exp_eq_sub_compose_typ; mauto 3 |];
+        transitivity {{{B[σ][Id]}}}; mauto 2.
+      symmetry.
+      eapply exp_eq_sub_cong_typ2';
+        mauto 3.
+    }
+    assert {{ Γ M2[σ] : B[σ][Wk][Id ,, M1[σ]]}} by mauto 4.
+    assert {{ Γ s Id ,, M1[σ] ,, M2[σ] : Γ, B[σ], B[σ][Wk]}} by mauto 3.
+ +
+    assert {{ Γ B[σ][Wk][Wk][Id,,M1[σ],,M2[σ]] B[σ] : Type@i }}.
+    {
+      etransitivity;
+        [eapply exp_eq_sub_compose_typ; mauto 3 |];
+        transitivity {{{B[σ][Wk][Id,,M1[σ]]}}}; mauto 3.
+      symmetry.
+      eapply exp_eq_sub_cong_typ2';
+        mauto 3.
+    }
+
+    assert {{ Γ #1[Id,,M1[σ],,M2[σ]] M1[σ] : B[σ] }}.
+    {
+      transitivity {{{#0[Id,,M1[σ]]}}};
+        [eapply wf_exp_eq_conv | eapply wf_exp_eq_conv; econstructor];
+        mauto 3.
+    }
+    assert {{ Γ #1[Id,,M1[σ],,M2[σ]] M1[σ] : B[σ][Wk][Wk][Id,,M1[σ],,M2[σ]] }} by mauto 4.
+ +
+    assert {{ Γ #0[Id,,M1[σ],,M2[σ]] M2[σ] : B[σ] }}
+      by (eapply wf_exp_eq_conv; mauto 3).
+    assert {{ Γ #0[Id,,M1[σ],,M2[σ]] M2[σ] : B[σ][Wk][Wk][Id,,M1[σ],,M2[σ]] }} by mauto 4.
+ +
+    assert {{ Γ (Eq B[σ][Wk][Wk] #1 #0)[Id ,, M1[σ] ,, M2[σ]] Eq B[σ] M1[σ] M2[σ] : Type@i }}
+      by (etransitivity; econstructor; mauto 3).
+    assert {{ Γ L[σ] : (Eq B[σ][Wk][Wk] #1 #0)[Id ,, M1[σ] ,, M2[σ]] }} by mauto 4.
+ +
+    assert {{ Γ s Id ,, M1[σ] ,, M2[σ] ,, L[σ] : Γ, B[σ], B[σ][Wk], Eq B[σ][Wk][Wk] #1 #0}} by mauto 3.
+ +
+    assert {{ (Γ, B[σ]), B[σ][Wk] B[Wk][q σWk] B[σ][Wk][Wk] : Type@i }}.
+    {
+      transitivity {{{B[Wk][q σ][Wk]}}};
+        [symmetry;
+         eapply exp_eq_sub_compose_typ; mauto 3 |].
+      eapply exp_eq_sub_cong_typ1; mauto 3.
+    }
+
+    assert {{ (Γ, B[σ]), B[σ][Wk] #0 : B[Wk][q σWk] }}
+      by (eapply wf_conv; mauto 3).
+ +
+    assert {{ ((Γ, B[σ]), B[σ][Wk]), Eq B[σ][Wk][Wk] #1 #0 s q (q σ)Wk : Δ,B,B[Wk] }} by mauto 4.
+    assert {{ ((Γ, B[σ]), B[σ][Wk]), Eq B[σ][Wk][Wk] #1 #0 (Eq B[Wk][Wk] #1 #0)[q (q σ)Wk] (Eq B[σ][Wk][Wk] #1 #0)[Wk] : Type@i }}.
+    {
+      transitivity {{{(Eq B[Wk][Wk] #1 #0)[q (q σ)][Wk]}}};
+        [symmetry;
+         eapply exp_eq_sub_compose_typ; mauto 3 |].
+      eapply exp_eq_sub_cong_typ1; mauto 3.
+    }
+
+
+    assert {{ Δ,B,B[Wk] Eq B[Wk][Wk] #1 #0 : Type@i }} by mauto 3.
+    assert {{ ((Γ, B[σ]), B[σ][Wk]), Eq B[σ][Wk][Wk] #1 #0 #0 : (Eq B[Wk][Wk] #1 #0)[q (q σ)Wk] }}.
+    {
+      eapply wf_conv; mauto 3.
+    }
+
+    assert {{ Γ s (q σ Wk) (Id,,M1[σ],,M2[σ]) : Δ, B }}
+             by (econstructor; mauto 4).
+    assert {{ Γ s (q σ Wk) (Id,,M1[σ],,M2[σ]) σ,,M1[σ] : Δ, B }}.
+    {
+      etransitivity;
+        [eapply wf_sub_eq_compose_assoc; mauto 3 |].
+      etransitivity;
+        [eapply wf_sub_eq_compose_cong;
+         [eapply wf_sub_eq_p_extend with (A:={{{B[σ][Wk]}}}) | eapply sub_eq_refl] |];
+        mauto 3.
+    }
+
+    assert {{ Γ B[Wk][(q σWk)(Id,,M1[σ],,M2[σ])] B[σ] : Type@i }}.
+    {
+      transitivity {{{B[Wk][σ,,M1[σ]]}}};
+        [eapply exp_eq_sub_cong_typ2' |]; mauto 3.
+    }
+    assert {{ Γ #0[Id,,M1[σ],,M2[σ]] M2[σ] : B[Wk][(q σWk)(Id,,M1[σ],,M2[σ])] }} by mauto 4.
+    assert {{ Γ s q (q σ) (Id,,M1[σ],,M2[σ]) σ,,M1[σ],,M2[σ] : Δ, B, B[Wk] }}.
+    {
+      etransitivity;
+        [eapply wf_sub_eq_extend_compose; mauto 4 |].
+      econstructor; mauto 2.
+    }
+    assert {{ Γ s (q (q σ)Wk)(Id,,M1[σ],,M2[σ],,L[σ]) : (Δ, B), B[Wk] }}
+      by (econstructor; mauto 4).
+    assert {{ Γ s (q (q σ) Wk) (Id,,M1[σ],,M2[σ],,L[σ]) σ,,M1[σ],,M2[σ] : Δ, B, B[Wk] }}.
+    {
+      etransitivity;
+        [eapply wf_sub_eq_compose_assoc; mauto 3 |].
+      etransitivity;
+        [eapply wf_sub_eq_compose_cong;
+         [eapply wf_sub_eq_p_extend with (A:={{{Eq B[σ][Wk][Wk] #1 #0}}}) | eapply sub_eq_refl] |];
+        mauto 3.
+    }
+
+    assert {{ Γ (Eq B[Wk][Wk] #1 #0)[σ,,M1[σ],,M2[σ]] Eq B[σ] M1[σ] M2[σ] : Type@i }}.
+    {
+      etransitivity;
+        econstructor; mauto 3.
+    }
+    assert {{ Γ (Eq B[Wk][Wk] #1 #0)[(q (q σ)Wk)(Id,,M1[σ],,M2[σ],,L[σ])] Eq B[σ] M1[σ] M2[σ] : Type@i }}.
+    {
+      transitivity {{{(Eq B[Wk][Wk] #1 #0)[σ,,M1[σ],,M2[σ]]}}};
+        [eapply exp_eq_sub_cong_typ2' |]; mauto 3.
+    }
+    assert {{ Γ #0[Id,,M1[σ],,M2[σ],,L[σ]] L[σ] : (Eq B[Wk][Wk] #1 #0)[(q (q σ)Wk)(Id,,M1[σ],,M2[σ],,L[σ])] }}.
+    {
+      eapply wf_exp_eq_conv with (A:={{{Eq B[σ] M1[σ] M2[σ]}}});
+        econstructor; mauto 3.
+    }
+    assert {{ Γ s q (q (q σ)) (Id,,M1[σ],,M2[σ],,L[σ]) σ,,M1[σ],,M2[σ],,L[σ] : Δ, B, B[Wk], Eq B[Wk][Wk] #1 #0 }}.
+    {
+      etransitivity;
+        [eapply wf_sub_eq_extend_compose; mauto 4 |].
+      econstructor; mauto 2.
+    }
+
+    assert {{Γ, B[σ] s (Id,,#0,,refl (B[Wk]) #0) q σ
+                   q (q (q σ)) (Id,,#0,,refl (B[σ][Wk]) #0)
+          : Δ, B, B[Wk], Eq (B[Wk][Wk]) # 1 # 0}} by mauto 3.
+ +
+    eapply wf_conv;
+    [econstructor | |];
+      mauto 2.
+    + eapply wf_conv; mauto 3.
+    + etransitivity;
+        [eapply exp_eq_sub_compose_typ | eapply exp_eq_sub_cong_typ2'];
+        mauto 3.
+ +
+  - eexists.
+    eapply exp_sub_typ; mauto 2.
+    assert {{ Δ s Id ,, M1 : Δ, B}} by mauto 4.
+    assert {{ Δ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Δ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][σ ,, M1[σ]] : Type@i}} by mauto.
+    assert {{ Γ B[σ] : Type @ i }} by mauto 3.
+    assert {{ Γ M1[σ] : B[σ] }} by mauto 3.
+    assert {{ Γ M2[σ] : B[σ] }} by mauto 3.
+    assert {{ Γ B[Wk][σ ,, M1[σ]] B[σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk (σ,,M1[σ])]}}};
+        [| eapply exp_eq_sub_cong_typ2']; mauto 4.
+    }
+    assert {{ Γ M2[σ] : B[Wk][σ ,, M1[σ]]}} by mauto 3.
+    assert {{ Γ s σ,, M1[σ] : Δ,B}} by mauto 3.
+    assert {{ Γ s σ ,, M1[σ] ,, M2[σ] : Δ, B, B[Wk]}} by mauto 3.
+    assert {{ Δ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+ +
+    assert {{Γ B[Wk][Wk][σ,,M1[σ],,M2[σ]] B[σ] : Type@i}}.
+    {
+      transitivity {{{B[Wk][Wk (σ,,M1[σ],,M2[σ])]}}};
+        [mauto 4 | transitivity {{{B[Wk][σ,,M1[σ]]}}}];
+        mauto 2.
+      eapply exp_eq_sub_cong_typ2';
+        mauto 4.
+    }
+    assert {{ Γ L[σ] : (Eq B M1 M2)[σ] }} by mauto 3.
+    assert {{ Γ L[σ] : Eq (B[σ]) (M1[σ]) (M2[σ]) }} by (eapply wf_conv; mauto 3).
+    assert {{ Γ L[σ] : (Eq (B[Wk][Wk]) #1 #0)[σ,,M1[σ],,M2[σ]] }}.
+    {
+      eapply wf_conv; mauto 2.
+      symmetry.
+      etransitivity.
+      - eapply wf_exp_eq_eq_sub; mauto.
+      - econstructor; mauto 3.
+        + eapply wf_exp_eq_conv;
+            [eapply sub_lookup_var1 with (B:=B) | |];
+            mauto 4.
+        + eapply wf_exp_eq_conv;
+            [eapply sub_lookup_var0 with (B:=B) | |];
+            mauto 4.
+    }
+    mauto 3.
+ +
+  - eapply wf_conv; [mauto 3 | mauto 2 |].
+    symmetry. mauto 3.
+ +
+  - assert {{ Γ s Id ,, M1 : Γ, B}} by mauto 4.
+    assert {{ Γ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Γ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][Id,,M1] B : Type@i }}.
+    {
+      transitivity {{{B[Wk (Id,,M1)]}}};
+        [| transitivity {{{B[Id]}}}];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ s Id ,, M1 ,, M2 : Γ, B , B[Wk]}}.
+    {
+      econstructor; mauto 3.
+      eapply wf_conv; mauto 2.
+    }
+    assert {{ Γ B[Wk][Wk][Id ,, M1 ,, M2] B : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id ,, M1 ,, M2)]}}};
+        [| transitivity {{{B[Wk][Id ,, M1]}}}];
+        mauto 4.
+      eapply exp_eq_sub_cong_typ2'; mauto 4.
+      eapply wf_sub_eq_p_extend; mauto 4.
+    }
+    assert {{ Γ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+    assert {{ Γ #1[Id,,M1,,M2] M1 : B[Wk][Wk][Id,,M1,,M2] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [eapply id_sub_lookup_var1 with (B:=B) | |];
+        mauto 4.
+    }
+    assert {{ Γ #0[Id,,M1,,M2] M2 : B[Wk][Wk][Id,,M1,,M2] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [eapply id_sub_lookup_var0 with (B:=B) | |];
+        mauto 4.
+    }
+    assert {{ Γ L : (Eq (B[Wk][Wk]) #1 #0) [ Id ,, M1 ,, M2]}}.
+    {
+      eapply wf_conv; mauto 2.
+      symmetry.
+      etransitivity.
+      - eapply wf_exp_eq_eq_sub; mauto.
+      - econstructor; mauto 3.
+    }
+    assert {{ Γ s Id ,, M1 ,, M2 ,, L : Γ, B , B[Wk], Eq (B[Wk][Wk]) #1 #0}} by mauto 4.
+    assert {{ Γ Eq B' M1' M2' : Type @ i }} by mauto 4.
+    assert {{ Γ Eq B' M1' M2' Eq B M1 M2 : Type @ i }} by (symmetry; mauto 3).
+ +
+    assert {{ Γ, B Γ, B' }} by mauto 3.
+    assert {{ Γ , B B'[Wk] : Type@i }} by mauto 4.
+    assert {{ Γ , B' B'[Wk] : Type@i }} by mauto 4.
+    assert {{ Γ, B B[Wk] B'[Wk] : Type@i }} by mauto 3.
+    assert {{ Γ, B' B[Wk] B'[Wk] : Type@i }} by mauto 3.
+    assert {{ Γ, B, B[Wk] Γ, B', B'[Wk] }} by mauto 4.
+ +
+    assert {{ Γ, B', B'[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by mauto 3.
+    assert {{ Γ, B', B'[Wk] Eq (B'[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+    assert {{ Γ, B, B[Wk] Eq (B'[Wk][Wk]) # 1 # 0 : Type@i }} by mauto 3.
+    assert {{ (Γ, B), B[Wk] Eq B[Wk][Wk] #1 #0 Eq B'[Wk][Wk] #1 #0 : Type@i }} by (econstructor; mauto 4).
+ +
+    assert {{ Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 Γ, B', B'[Wk], Eq (B'[Wk][Wk]) #1 #0 }} by mauto 3.
+ +
+    assert {{ Γ, B Eq B[Wk] #0 #0 : Type@i }} by (econstructor; mauto 2).
+    assert {{ Γ, B Eq B'[Wk] #0 #0 Eq B[Wk] #0 #0 : Type@i }} by (econstructor; mauto 3).
+ +
+    assert {{ Γ, B refl B'[Wk] #0 : Eq (B[Wk]) #0 #0 }}.
+    {
+      eapply wf_conv;
+      [econstructor | |]; mauto 3.
+    }
+    assert {{ Γ, B refl B[Wk] #0 : Eq (B[Wk]) #0 #0 }} by mauto 4.
+    assert {{ Γ, B refl B[Wk] #0 refl B'[Wk] #0 : Eq (B[Wk]) #0 #0 }} by mauto 3.
+    assert {{ Γ, B s Id,,#0 : Γ, B, B[Wk] }} by mauto 3.
+    assert {{ (Γ, B), B[Wk] #1 : B[Wk][Wk] }} by mauto 4.
+    assert {{ Γ, B s Wk(Id,,#0) : Γ, B }} by (econstructor; mauto 3).
+    assert {{ Γ, B B[Wk][Wk][Id,,#0] B[Wk] : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id,,#0)]}}};
+        [eapply exp_eq_sub_compose_typ |
+         transitivity {{{B[Wk][Id]}}} ];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ, B #1[Id,,#0] #0 : B[Wk] }}.
+    {
+      transitivity {{{#0[Id]}}}.
+      - eapply wf_exp_eq_conv;
+          [eapply wf_exp_eq_var_S_sub with (A:={{{B[Wk]}}}) | |];
+          mauto 3.
+      - mauto 3.
+    }
+    assert {{ Γ, B #1[Id,,#0] #0 : B[Wk][Wk][Id,,#0] }} by mauto 4.
+    assert {{ Γ, B #0[Id,,#0] #0 : B[Wk] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [eapply wf_exp_eq_var_0_sub with (A:={{{B[Wk]}}}) | |];
+        mauto 3.
+    }
+    assert {{ Γ, B #0[Id,,#0] #0 : B[Wk][Wk][Id,,#0] }} by mauto 4.
+    assert {{ Γ, B (Eq B[Wk][Wk] #1 #0)[Id,,#0] Eq (B[Wk]) #0 #0 : Type@i }}.
+    {
+      etransitivity; econstructor; mauto 3.
+    }
+    assert {{ Γ, B refl B'[Wk] #0 : (Eq B[Wk][Wk] #1 #0)[Id,,#0] }} by mauto 4.
+    assert {{ Γ, B refl B[Wk] #0 : (Eq B[Wk][Wk] #1 #0)[Id,,#0] }} by mauto 4.
+    assert {{ Γ, B s Id,,#0,,refl B'[Wk] #0 : Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 }} by mauto 4.
+    assert {{ Γ, B s Id,,#0,,refl B[Wk] #0 : Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 }} by mauto 4.
+ +
+    assert {{ Γ, B s Id,,#0,,refl B[Wk] #0 Id,,#0,,refl B'[Wk] #0 : Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 }}
+      by (econstructor; mauto 4).
+ +
+    assert {{ Γ, B C[Id,,#0,,refl B[Wk] #0] C'[Id,,#0,,refl B'[Wk] #0] : Type@j }}.
+    {
+      etransitivity;
+        [eapply exp_eq_sub_cong_typ2' |
+          eapply exp_eq_sub_cong_typ1];
+        mauto 3.
+    }
+
+    assert {{ Γ M1 M1' : B[Id] }} by (eapply wf_exp_eq_conv; mauto 3).
+    assert {{ Γ s Id,,M1 Id,,M1' : Γ, B }} by mauto 3.
+    assert {{ Γ M2 M2' : B[Wk][Id,,M1] }} by (eapply wf_exp_eq_conv; mauto 3).
+    assert {{ Γ s Id,,M1,,M2 Id,,M1',,M2' : Γ, B, B[Wk] }} by mauto 3.
+ +
+    assert {{ Γ (Eq B[Wk][Wk] #1 #0)[Id,,M1,,M2] Eq B M1 M2 : Type@i }}.
+    {
+      etransitivity;
+        econstructor; mauto 3.
+    }
+    assert {{ Γ s Id,,M1,,M2,,L Id,,M1',,M2',,L' : Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 }}
+      by (econstructor; mauto 4).
+ +
+    assert {{ Γ s Id ,, M1' : Γ, B}} by mauto 4.
+    assert {{ Γ B[Wk][Id,,M1'] B : Type@i }}.
+    {
+      transitivity {{{B[Wk (Id,,M1')]}}};
+        [| transitivity {{{B[Id]}}}];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ M2' : B[Wk][Id,,M1'] }} by mauto 4.
+    assert {{ Γ s Id,,M1',,M2' : Γ, B, B[Wk]}} by mauto 3.
+ +
+    assert {{ Γ (Eq B[Wk][Wk] #1 #0)[Id,,M1',,M2'] Eq B M1 M2 : Type@i }}.
+    {
+      etransitivity;
+        [eapply exp_eq_sub_cong_typ2' | ];
+        cycle 1.
+      - eauto.
+      - symmetry. eauto.
+      - eauto.
+      - eauto.
+    }
+    assert {{ Γ L' : (Eq B[Wk][Wk] #1 #0)[Id,,M1',,M2'] }} by mauto 4.
+    assert {{ Γ s Id,,M1',,M2',,L' : ((Γ, B), B[Wk]), Eq B[Wk][Wk] #1 #0 }} by mauto 3.
+ +
+    eapply wf_conv;
+      [econstructor; mauto 3 | mauto 2 | ].
+    + eapply ctxeq_exp; eauto.
+      eapply wf_conv;
+        mauto 2.
+    + etransitivity;
+        [eapply exp_eq_sub_cong_typ2' |
+          eapply exp_eq_sub_cong_typ1];
+        mauto 3.
+ +
+  - eexists.
+    eapply exp_sub_typ; mauto 2.
+    assert {{ Γ s Id ,, M1 : Γ, B}} by mauto 4.
+    assert {{ Γ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Γ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][Id,,M1] B : Type@i }}.
+    {
+      transitivity {{{B[Wk (Id,,M1)]}}};
+        [| transitivity {{{B[Id]}}}];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ s Id ,, M1 ,, M2 : Γ, B , B[Wk]}}.
+    {
+      econstructor; mauto 3.
+      eapply wf_conv; mauto 2.
+    }
+    assert {{ Γ B[Wk][Wk][Id ,, M1 ,, M2] B : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id ,, M1 ,, M2)]}}};
+        [| transitivity {{{B[Wk][Id ,, M1]}}}];
+        mauto 4.
+      eapply exp_eq_sub_cong_typ2'; mauto 4.
+      eapply wf_sub_eq_p_extend; mauto 4.
+    }
+    assert {{ Γ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+    assert {{ Γ L : (Eq (B[Wk][Wk]) #1 #0) [ Id ,, M1 ,, M2]}}.
+    {
+      eapply wf_conv; mauto 2.
+      symmetry.
+      etransitivity.
+      - eapply wf_exp_eq_eq_sub; mauto.
+      - econstructor; mauto 3.
+        + eapply wf_exp_eq_conv;
+            [eapply id_sub_lookup_var1 with (B:=B) | |];
+            mauto 4.
+        + eapply wf_exp_eq_conv;
+            [eapply id_sub_lookup_var0 with (B:=B) | |];
+            mauto 4.
+    }
+    mauto 3.
+ +
+  - clear HAi1 HAi2.
+    assert {{ Γ s Id ,, N : Γ, B}} by mauto 4.
+    assert {{ Γ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Γ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][Id,,N] B : Type@i }}.
+    {
+      transitivity {{{B[Wk (Id,,N)]}}};
+        [| transitivity {{{B[Id]}}}];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ s Id ,, N ,, N : Γ, B , B[Wk]}}.
+    {
+      econstructor; mauto 3.
+      eapply wf_conv; mauto 2.
+    }
+    assert {{ Γ B[Wk][Wk][Id ,, N ,, N] B : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id ,, N ,, N)]}}};
+        [| transitivity {{{B[Wk][Id ,, N]}}}];
+        mauto 4.
+      eapply exp_eq_sub_cong_typ2'; mauto 4.
+      eapply wf_sub_eq_p_extend; mauto 4.
+    }
+    assert {{ Γ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+    assert {{ Γ refl B N : Eq B N N}} by mauto 3.
+    assert {{ Γ refl B N : (Eq (B[Wk][Wk]) #1 #0) [ Id ,, N ,, N]}}.
+    {
+      eapply wf_conv; mauto 2.
+      symmetry.
+      etransitivity.
+      - eapply wf_exp_eq_eq_sub; mauto.
+      - econstructor; mauto 3.
+        + eapply wf_exp_eq_conv;
+            [eapply id_sub_lookup_var1 with (B:=B) | |];
+            mauto 4.
+        + eapply wf_exp_eq_conv;
+            [eapply id_sub_lookup_var0 with (B:=B) | |];
+            mauto 4.
+    }
+    assert {{Γ, B s Id,, #0 : Γ, B, B[Wk] }} by mauto 3.
+ +
+    assert {{ Γ, B refl B[Wk] #0 : Eq (B[Wk]) #0 #0 }} by mauto 4.
+    assert {{ Γ, B s Id,,#0 : Γ, B, B[Wk] }} by mauto 3.
+    assert {{ (Γ, B), B[Wk] #1 : B[Wk][Wk] }} by mauto 4.
+    assert {{ Γ, B s Wk(Id,,#0) : Γ, B }} by (econstructor; mauto 3).
+    assert {{ Γ, B B[Wk][Wk][Id,,#0] B[Wk] : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id,,#0)]}}};
+        [eapply exp_eq_sub_compose_typ |
+         transitivity {{{B[Wk][Id]}}} ];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ, B #1[Id,,#0] #0 : B[Wk] }}.
+    {
+      transitivity {{{#0[Id]}}}.
+      - eapply wf_exp_eq_conv;
+          [eapply wf_exp_eq_var_S_sub with (A:={{{B[Wk]}}}) | |];
+          mauto 3.
+      - mauto 3.
+    }
+    assert {{ Γ, B #1[Id,,#0] #0 : B[Wk][Wk][Id,,#0] }} by mauto 4.
+    assert {{ Γ, B #0[Id,,#0] #0 : B[Wk] }}.
+    {
+      eapply wf_exp_eq_conv;
+        [eapply wf_exp_eq_var_0_sub with (A:={{{B[Wk]}}}) | |];
+        mauto 3.
+    }
+    assert {{ Γ, B #0[Id,,#0] #0 : B[Wk][Wk][Id,,#0] }} by mauto 4.
+    assert {{ Γ, B (Eq B[Wk][Wk] #1 #0)[Id,,#0] Eq (B[Wk]) #0 #0 : Type@i }}.
+    {
+      etransitivity; econstructor; mauto 3.
+    }
+    assert {{ Γ, B refl B[Wk] #0 : (Eq B[Wk][Wk] #1 #0)[Id,,#0] }} by mauto 4.
+    assert {{ Γ, B s Id,,#0,,refl B[Wk] #0 : Γ, B, B[Wk], Eq (B[Wk][Wk]) #1 #0 }} by mauto 4.
+ +
+    assert {{ Γ, B #0 : B[Wk][Id] }} by mauto 3.
+ +
+    assert {{ Γ B[Wk][Id(Id,,N)] B : Type@i }}.
+    {
+      transitivity {{{B[Wk][Id,,N]}}}; mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ #0[Id,,N] N : B }}.
+    {
+      eapply wf_exp_eq_conv with (A:={{{B[Id]}}}); mauto 4.
+    }
+    assert {{ Γ B[Wk][Id(Id,,N)] : Type@i }} by mauto 4.
+    assert {{ Γ #0[Id,,N] N : B[Wk][Id(Id,,N)] }} by mauto 3.
+ +
+    assert {{ Γ s Id(Id,,N),,#0[Id,,N] Id,,N,,N : (Γ, B), B[Wk] }} by mauto 3.
+    assert {{ Γ s (Id,,#0)(Id,,N) Id,,N,,N : (Γ, B), B[Wk] }}.
+    {
+      etransitivity;
+        [eapply wf_sub_eq_extend_compose |];
+        mauto 2.
+    }
+
+    assert {{ Γ #1[Id,,N,,N] N : B }}.
+    {
+      transitivity {{{#0[Id,,N]}}}.
+      - eapply wf_exp_eq_conv;
+          [eapply wf_exp_eq_var_S_sub with (A:={{{B[Wk]}}}) | |];
+          mauto 4.
+      - mauto 3.
+    }
+    assert {{ Γ s Wk(Id,,N,,N) : Γ, B }} by mauto 4.
+    assert {{ Γ s Wk(Id,,N,,N) Id,,N : Γ, B }}
+      by (econstructor; mauto 4).
+    assert {{ Γ B[Wk][Wk][Id,,N,,N] B : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id,,N,,N)]}}};
+        [eapply exp_eq_sub_compose_typ |];
+        mauto 3.
+    }
+    assert {{ Γ #1[Id,,N,,N] N : B[Wk][Wk][Id,,N,,N] }} by mauto 4.
+ +
+    assert {{ Γ #0[Id,,N,,N] N : B }}.
+    {
+      eapply wf_exp_eq_conv with (A:={{{B[Wk][Id,,N]}}});
+        [econstructor | |];
+        mauto 4.
+    }
+    assert {{ Γ #0[Id,,N,,N] N : B[Wk][Wk][Id,,N,,N] }} by mauto 4.
+ +
+    assert {{ Γ (Eq B[Wk][Wk] #1 #0)[(Id,,#0)(Id,,N)] Eq B N N : Type@i }}.
+    {
+      etransitivity;
+        [eapply exp_eq_sub_cong_typ2' | ]; mauto 2.
+      etransitivity;
+        econstructor; mauto 3.
+    }
+
+    assert {{ Γ (Eq B[Wk][Wk] #1 #0)[Id,,#0][Id,,N] Eq B N N : Type@i }}.
+    {
+      etransitivity; eauto.
+      eapply exp_eq_sub_compose_typ; mauto 3.
+    }
+    assert {{ Γ Eq B N N : Type@i }} by mauto 3.
+ +
+    assert {{ Γ #0[Id,,N] N : B }}.
+    {
+      eapply wf_exp_eq_conv with (A:={{{B[Id]}}});
+        [econstructor | |];
+        mauto 4.
+    }
+    assert {{ Γ #0[Id,,N] N : B[Wk][Id,,N] }} by mauto 4.
+ +
+    assert {{ Γ (refl B[Wk] #0)[Id,,N] refl B N : Eq B N N }}.
+    {
+      etransitivity.
+      - eapply wf_exp_eq_conv;
+          [eapply wf_exp_eq_refl_sub | | ]; mauto 4.
+      - eapply wf_exp_eq_conv; [econstructor | | econstructor]; mauto 3.
+    }
+
+    assert {{ Γ (refl B[Wk] #0)[Id,,N] refl B N : (Eq B[Wk][Wk] #1 #0)[(Id,,#0)(Id,,N)] }}
+             by (eapply wf_exp_eq_conv; mauto 4).
+ +
+    eapply wf_conv; mauto 3.
+    etransitivity.
+    + eapply exp_eq_sub_compose_typ; mauto 2.
+    + symmetry.
+      eapply exp_eq_sub_cong_typ2'; mauto 2.
+      symmetry.
+      etransitivity;
+        [eapply wf_sub_eq_extend_compose |];
+        mauto 2.
+ +
+  - eexists.
+    eapply exp_sub_typ; mauto 2.
+    assert {{ Γ s Id ,, N : Γ, B}} by mauto 4.
+    assert {{ Γ , B B[Wk] : Type@i }} by mauto 4.
+    assert {{ Γ , B , B[Wk] B[Wk][Wk] : Type@i }} by mauto 4.
+    assert {{ Γ B[Wk][Id,,N] B : Type@i }}.
+    {
+      transitivity {{{B[Wk (Id,,N)]}}};
+        [| transitivity {{{B[Id]}}}];
+        mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 3.
+    }
+    assert {{ Γ s Id ,, N ,, N : Γ, B , B[Wk]}}.
+    {
+      econstructor; mauto 3.
+      eapply wf_conv; mauto 2.
+    }
+    assert {{ Γ B[Wk][Wk][Id ,, N ,, N] B : Type@i }}.
+    {
+      transitivity {{{B[Wk][Wk (Id ,, N ,, N)]}}};
+        [| transitivity {{{B[Wk][Id ,, N]}}}];
+        mauto 4.
+      eapply exp_eq_sub_cong_typ2'; mauto 4.
+      eapply wf_sub_eq_p_extend; mauto 4.
+    }
+    assert {{ Γ, B, B[Wk] Eq (B[Wk][Wk]) # 1 # 0 : Type@i }} by (econstructor; mauto 4).
+    assert {{ Γ refl B N : Eq B N N}} by mauto 3.
+    assert {{ Γ refl B N : (Eq (B[Wk][Wk]) #1 #0) [ Id ,, N ,, N]}}.
+    {
+      eapply wf_conv; mauto 2.
+      symmetry.
+      etransitivity.
+      - eapply wf_exp_eq_eq_sub; mauto.
+      - econstructor; mauto 3.
+        + eapply wf_exp_eq_conv;
+            [eapply id_sub_lookup_var1 with (B:=B) | |];
+            mauto 4.
+        + eapply wf_exp_eq_conv;
+            [eapply id_sub_lookup_var0 with (B:=B) | |];
+            mauto 4.
+    }
+    mauto 3.
+ +
+  - assert {{ Γ s Wk(σ ,, N') σ : Δ }} by mauto 3.
+    assert {{ Γ B[Wk(σ ,, N')] B[σ] : Type@i }} by mauto 4.
+    assert {{ Δ, B }} by mauto 2.
+    assert {{ Δ, B s Wk : Δ }} by mauto 2.
+    assert {{ Γ s σ ,, N' : Δ, B }} by mauto 2.
+    assert {{ Γ B[Wk][σ ,, N'] B[σ] : Type@i }} by mauto 3.
+    enough {{ Γ #0[σ ,, N'] : B[Wk][σ ,, N'] }}...
+ +
+  - assert (exists i, {{ Δ C : Type@i }}) as [i'] by mauto 2.
+    assert {{ Γ s Wk(σ ,, N) σ : Δ }} by mauto 2.
+    assert {{ Γ C[Wk(σ ,, N)] C[σ] : Type@i' }} by mauto 4.
+    assert {{ Δ, B s Wk : Δ }} by mauto 3.
+    assert {{ Γ s σ ,, N : Δ, B }} by mauto 2.
+    assert {{ Γ C[Wk][σ ,, N] C[σ] : Type@i' }} by mauto 3.
+    assert {{ Δ, B #(S x) : C[Wk] }} by mauto 4.
+    enough {{ Γ #(S x)[σ ,, N] : C[Wk][σ ,, N] }}...
+ +
+  - assert (exists i, {{ Δ C : Type@i }}) as []...
+ +
+
+ +
+presup_sub_eq cases +
+
+  - econstructor...
+ +
+  - assert {{ Γ B[σ] B[σ'] : Type@i }} by mauto 2.
+    eapply wf_conv...
+ +
+  - assert {{ Γ N'[Id] : A[Id] }}...
+ +
+  - assert {{ Γ N[σ][τ] : B[σ][τ] }} by mauto 3.
+    eapply wf_conv...
+ +
+  - econstructor...
+ +
+  - econstructor; mauto 3.
+    eapply wf_conv...
+ +
+  - mauto.
+ +
+  - assert (exists i, {{ Γ0 A : Type@i }}) as [] by mauto 2.
+    assert {{ Γ #0[σ] : A[Wk][σ] }} by mauto 3.
+    enough {{ Γ #0[σ] : A[Wkσ] }} by mauto 4.
+    eapply wf_conv...
+ +
+
+ +
+presup_subtyp cases +
+
+  - exists (max i i0); split; mauto 3 using lift_exp_max_left, lift_exp_max_right.
+  - exists (max (S i) (S j)); split; mauto 3 using lift_exp_max_left, lift_exp_max_right.
+  - mauto.
+Qed.
+ +
+Ltac gen_presup H := gen_presup_IH @presup_exp_eq @presup_sub_eq @presup_subtyp H.
+ +
+Ltac gen_presups := (on_all_hyp: fun H => gen_presup H); invert_wf_ctx; clear_dups.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.Syntax.html b/ext/prop-eq/Mcltt.Core.Syntactic.Syntax.html new file mode 100644 index 00000000..295e549a --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.Syntax.html @@ -0,0 +1,321 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.Syntax

+ +
+From Coq Require Import List String.
+ +
+From Mcltt.Core Require Import Base.
+ +
+
+ +
+

Concrete Syntax Tree

+ +
+
+Module Cst.
+Inductive obj : Set :=
+| typ : nat -> obj
+| nat : obj
+| zero : obj
+| succ : obj -> obj
+| natrec : obj -> string -> obj -> obj -> string -> string -> obj -> obj
+| pi : string -> obj -> obj -> obj
+| fn : string -> obj -> obj -> obj
+| app : obj -> obj -> obj
+| prop_eq : obj -> obj -> obj -> obj
+| refl : obj -> obj -> obj
+| eqrec : obj ->
+ +
+A : eq domain type +
+
+          string -> string -> string -> obj ->
+ +
+x y (z : Eq A x y). M +
+
+          string -> obj ->
+ +
+x. Pf : Mx/x, x/y, refl A x/z +
+
+          obj -> obj -> obj -> obj
+| var : string -> obj.
+End Cst.
+ +
+
+ +
+

Abstract Syntac Tree

+ +
+
+Inductive exp : Set :=
+
+ +
+Universe +
+
+| a_typ : nat -> exp
+
+ +
+Natural numbers +
+ + +
+Functions +
+
+| a_pi : exp -> exp -> exp
+| a_fn : exp -> exp -> exp
+| a_app : exp -> exp -> exp
+
+ +
+Propositional equality +
+ + +
+Variable +
+
+| a_var : nat -> exp
+
+ +
+Substitution Application +
+
+| a_sub : exp -> sub -> exp
+with sub : Set :=
+| a_id : sub
+| a_weaken : sub
+| a_compose : sub -> sub -> sub
+| a_extend : sub -> exp -> sub.
+ +
+Notation ctx := (list exp).
+Notation typ := exp.
+ +
+Fixpoint nat_to_exp n : exp :=
+  match n with
+  | 0 => a_zero
+  | S m => a_succ (nat_to_exp m)
+  end.
+Definition num_to_exp n := nat_to_exp (Nat.of_num_uint n).
+ +
+Fixpoint exp_to_nat e : option nat :=
+  match e with
+  | a_zero => Some 0
+  | a_succ e' =>
+      match exp_to_nat e' with
+      | Some n => Some (S n)
+      | None => None
+      end
+  | _ => None
+  end.
+Definition exp_to_num e :=
+  match exp_to_nat e with
+  | Some n => Some (Nat.to_num_uint n)
+  | None => None
+  end.
+ +
+
+ +
+

Syntactic Normal/Neutral Form

+ +
+
+Inductive nf : Set :=
+| nf_typ : nat -> nf
+| nf_nat : nf
+| nf_zero : nf
+| nf_succ : nf -> nf
+| nf_pi : nf -> nf -> nf
+| nf_fn : nf -> nf -> nf
+| nf_eq : nf -> nf -> nf -> nf
+| nf_refl : nf -> nf -> nf
+| nf_neut : ne -> nf
+with ne : Set :=
+| ne_natrec : nf -> nf -> nf -> ne -> ne
+| ne_app : ne -> nf -> ne
+| ne_var : nat -> ne
+| ne_eqrec : nf -> nf -> nf -> nf -> nf -> ne -> ne
+.
+ +
+Fixpoint nf_to_exp (M : nf) : exp :=
+  match M with
+  | nf_typ i => a_typ i
+  | nf_nat => a_nat
+  | nf_zero => a_zero
+  | nf_succ M => a_succ (nf_to_exp M)
+  | nf_pi A B => a_pi (nf_to_exp A) (nf_to_exp B)
+  | nf_fn A M => a_fn (nf_to_exp A) (nf_to_exp M)
+  | nf_eq A M N => a_eq (nf_to_exp A) (nf_to_exp M) (nf_to_exp N)
+  | nf_refl A M => a_refl (nf_to_exp A) (nf_to_exp M)
+  | nf_neut M => ne_to_exp M
+  end
+with ne_to_exp (M : ne) : exp :=
+  match M with
+  | ne_natrec A MZ MS M => a_natrec (nf_to_exp A) (nf_to_exp MZ) (nf_to_exp MS) (ne_to_exp M)
+  | ne_app M N => a_app (ne_to_exp M) (nf_to_exp N)
+  | ne_var x => a_var x
+  | ne_eqrec A B BR M M' N =>
+      a_eqrec (nf_to_exp A) (nf_to_exp B) (nf_to_exp BR) (nf_to_exp M) (nf_to_exp M') (ne_to_exp N)
+  end
+.
+ +
+Coercion nf_to_exp : nf >-> exp.
+Coercion ne_to_exp : ne >-> exp.
+ +
+Fact nf_eq_dec : forall (M M' : nf),
+    ({M = M'} + {M <> M'})%type
+with ne_eq_dec : forall (M M' : ne),
+    ({M = M'} + {M <> M'})%type.
+Proof.
+  all: intros; decide equality;
+    apply PeanoNat.Nat.eq_dec.
+Defined.
+ +
+Definition q σ := a_extend (a_compose σ a_weaken) (a_var 0).
+Arguments q σ/.
+ +
+#[global] Declare Custom Entry exp.
+#[global] Declare Custom Entry nf.
+ +
+#[global] Bind Scope mcltt_scope with exp.
+#[global] Bind Scope mcltt_scope with sub.
+#[global] Bind Scope mcltt_scope with nf.
+#[global] Bind Scope mcltt_scope with ne.
+Open Scope mcltt_scope.
+ +
+
+ +
+

Syntactic Notations

+ +
+
+Module Syntax_Notations.
+  Notation "{{{ x }}}" := x (at level 0, x custom exp at level 99, format "'{{{' x '}}}'") : mcltt_scope.
+
+ +
+We need to define substitution notation first to assert left associativity of level 0. +
+
+  Notation "e [ s ]" := (a_sub e s) (in custom exp at level 0, e custom exp, s custom exp at level 60, left associativity, format "e [ s ]") : mcltt_scope.
+  Notation "( x )" := x (in custom exp at level 0, x custom exp at level 60) : mcltt_scope.
+  Notation "~ x" := x (in custom exp at level 0, x constr at level 0) : mcltt_scope.
+  Notation "x" := x (in custom exp at level 0, x ident) : mcltt_scope.
+  Notation "'λ' A e" := (a_fn A e) (in custom exp at level 1, A custom exp at level 0, e custom exp at level 60) : mcltt_scope.
+  Notation "f x .. y" := (a_app .. (a_app f x) .. y) (in custom exp at level 40, f custom exp, x custom exp at next level, y custom exp at next level) : mcltt_scope.
+  Notation "'ℕ'" := a_nat (in custom exp) : mcltt_scope.
+  Notation "'Type' @ n" := (a_typ n) (in custom exp at level 0, n constr at level 0, format "'Type' @ n") : mcltt_scope.
+  Notation "'Π' A B" := (a_pi A B) (in custom exp at level 1, A custom exp at level 0, B custom exp at level 60) : mcltt_scope.
+  Notation "'zero'" := a_zero (in custom exp at level 0) : mcltt_scope.
+  Notation "'succ' e" := (a_succ e) (in custom exp at level 1, e custom exp at level 0) : mcltt_scope.
+  Notation "'rec' e 'return' A | 'zero' -> ez | 'succ' -> es 'end'" := (a_natrec A ez es e) (in custom exp at level 0, A custom exp at level 60, ez custom exp at level 60, es custom exp at level 60, e custom exp at level 60) : mcltt_scope.
+  Notation "'Eq' A M N" := (a_eq A M N) (in custom exp at level 1, A custom exp at level 30, M custom exp at level 35, N custom exp at level 40) : mcltt_scope.
+  Notation "'refl' A M" := (a_refl A M) (in custom exp at level 1, A custom exp at level 30, M custom exp at level 40) : mcltt_scope.
+  Notation "'eqrec' N 'as' 'Eq' A M1 M2 'return' B | 'refl' -> BR 'end'" := (a_eqrec A B BR M1 M2 N) (in custom exp at level 0, A custom exp at level 30, B custom exp at level 60, BR custom exp at level 60, M1 custom exp at level 35, M2 custom exp at level 40, N custom exp at level 60) : mcltt_scope.
+ +
+  Notation "'#' n" := (a_var n) (in custom exp at level 0, n constr at level 0, format "'#' n") : mcltt_scope.
+  Notation "'Id'" := a_id (in custom exp at level 0) : mcltt_scope.
+  Notation "'Wk'" := a_weaken (in custom exp at level 0) : mcltt_scope.
+ +
+  Notation "σ ∘ τ" := (a_compose σ τ) (in custom exp at level 40, right associativity, format "σ ∘ τ") : mcltt_scope.
+  Notation "σ ,, e" := (a_extend σ e) (in custom exp at level 50, left associativity, format "σ ,, e") : mcltt_scope.
+  Notation "'q' σ" := (q σ) (in custom exp at level 30) : mcltt_scope.
+ +
+  Notation "⋅" := nil (in custom exp at level 0) : mcltt_scope.
+  Notation "x , y" := (cons y x) (in custom exp at level 50, format "x , y") : mcltt_scope.
+ +
+  Notation "n{{{ x }}}" := x (at level 0, x custom nf at level 99, format "'n{{{' x '}}}'") : mcltt_scope.
+  Notation "( x )" := x (in custom nf at level 0, x custom nf at level 60) : mcltt_scope.
+  Notation "~ x" := x (in custom nf at level 0, x constr at level 0) : mcltt_scope.
+  Notation "x" := x (in custom nf at level 0, x ident) : mcltt_scope.
+  Notation "'λ' A e" := (nf_fn A e) (in custom nf at level 2, A custom nf at level 1, e custom nf at level 60) : mcltt_scope.
+  Notation "f x .. y" := (ne_app .. (ne_app f x) .. y) (in custom nf at level 40, f custom nf, x custom nf at next level, y custom nf at next level) : mcltt_scope.
+  Notation "'ℕ'" := nf_nat (in custom nf) : mcltt_scope.
+  Notation "'Type' @ n" := (nf_typ n) (in custom nf at level 0, n constr at level 0, format "'Type' @ n") : mcltt_scope.
+  Notation "'Π' A B" := (nf_pi A B) (in custom nf at level 2, A custom nf at level 1, B custom nf at level 60) : mcltt_scope.
+  Notation "'zero'" := nf_zero (in custom nf at level 0) : mcltt_scope.
+  Notation "'succ' M" := (nf_succ M) (in custom nf at level 2, M custom nf at level 1) : mcltt_scope.
+  Notation "'rec' M 'return' A | 'zero' -> MZ | 'succ' -> MS 'end'" := (ne_natrec A MZ MS M) (in custom nf at level 0, A custom nf at level 60, MZ custom nf at level 60, MS custom nf at level 60, M custom nf at level 60) : mcltt_scope.
+  Notation "'#' n" := (ne_var n) (in custom nf at level 0, n constr at level 0, format "'#' n") : mcltt_scope.
+  Notation "'⇑' M" := (nf_neut M) (in custom nf at level 0, M custom nf at level 99, format "'⇑' M") : mcltt_scope.
+  Notation "'Eq' A M N" := (nf_eq A M N) (in custom nf at level 1, A custom nf at level 30, M custom nf at level 35, N custom nf at level 40) : mcltt_scope.
+  Notation "'refl' A M" := (nf_refl A M) (in custom nf at level 1, A custom nf at level 30, M custom nf at level 40) : mcltt_scope.
+  Notation "'eqrec' N 'as' 'Eq' A M1 M2 'return' B | 'refl' -> BR 'end'" := (ne_eqrec A B BR M1 M2 N) (in custom nf at level 0, A custom nf at level 30, B custom nf at level 60, BR custom nf at level 60, M1 custom nf at level 35, M2 custom nf at level 40, N custom nf at level 60) : mcltt_scope.
+End Syntax_Notations.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.System.Definitions.html b/ext/prop-eq/Mcltt.Core.Syntactic.System.Definitions.html new file mode 100644 index 00000000..f38dacb6 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.System.Definitions.html @@ -0,0 +1,753 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.System.Definitions

+ +
+From Coq Require Import List Classes.RelationClasses Setoid Morphisms.
+ +
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export Syntax.
+Import Syntax_Notations.
+ +
+Reserved Notation "⊢ Γ" (in custom judg at level 80, Γ custom exp).
+Reserved Notation "⊢ Γ ≈ Γ'" (in custom judg at level 80, Γ custom exp, Γ' custom exp).
+Reserved Notation "Γ ⊢ M ≈ M' : A" (in custom judg at level 80, Γ custom exp, M custom exp, M' custom exp, A custom exp).
+Reserved Notation "Γ ⊢ M : A" (in custom judg at level 80, Γ custom exp, M custom exp, A custom exp).
+Reserved Notation "Γ ⊢s σ : Δ" (in custom judg at level 80, Γ custom exp, σ custom exp, Δ custom exp).
+Reserved Notation "Γ ⊢s σ ≈ σ' : Δ" (in custom judg at level 80, Γ custom exp, σ custom exp, σ' custom exp, Δ custom exp).
+Reserved Notation "⊢ Γ ⊆ Γ'" (in custom judg at level 80, Γ custom exp, Γ' custom exp).
+Reserved Notation "Γ ⊢ A ⊆ A'" (in custom judg at level 80, Γ custom exp, A custom exp, A' custom exp).
+Reserved Notation "'#' x : A ∈ Γ" (in custom judg at level 80, x constr at level 0, A custom exp, Γ custom exp at level 50).
+ +
+Generalizable All Variables.
+ +
+Inductive ctx_lookup : nat -> typ -> ctx -> Prop :=
+  | here : `({{ #0 : A[Wk] Γ , A }})
+  | there : `({{ #n : A Γ }} -> {{ #(S n) : A[Wk] Γ , B }})
+where "'#' x : A ∈ Γ" := (ctx_lookup x A Γ) (in custom judg) : type_scope.
+ +
+Inductive wf_ctx : ctx -> Prop :=
+| wf_ctx_empty : {{ }}
+| wf_ctx_extend :
+  `( {{ Γ }} ->
+     {{ Γ A : Type@i }} ->
+     {{ Γ , A }} )
+where "⊢ Γ" := (wf_ctx Γ) (in custom judg) : type_scope
+
+with wf_ctx_sub : ctx -> ctx -> Prop :=
+| wf_ctx_sub_empty : {{ }}
+| wf_ctx_sub_extend :
+  `( {{ Γ Δ }} ->
+     {{ Γ A : Type@i }} ->
+     {{ Δ A' : Type@i }} ->
+     {{ Γ A A' }} ->
+     {{ Γ , A Δ , A' }} )
+where "⊢ Γ ⊆ Γ'" := (wf_ctx_sub Γ Γ') (in custom judg) : type_scope
+
+with wf_exp : ctx -> typ -> exp -> Prop :=
+| wf_typ :
+  `( {{ Γ }} ->
+     {{ Γ Type@i : Type@(S i) }} )
+
+| wf_nat :
+  `( {{ Γ }} ->
+     {{ Γ : Type@0 }} )
+| wf_zero :
+  `( {{ Γ }} ->
+     {{ Γ zero : }} )
+| wf_succ :
+  `( {{ Γ M : }} ->
+     {{ Γ succ M : }} )
+| wf_natrec :
+  `( {{ Γ , A : Type@i }} ->
+     {{ Γ MZ : A[Id,,zero] }} ->
+     {{ Γ , , A MS : A[WkWk,,succ(#1)] }} ->
+     {{ Γ M : }} ->
+     {{ Γ rec M return A | zero -> MZ | succ -> MS end : A[Id,,M] }} )
+
+| wf_pi :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ , A B : Type@i }} ->
+     {{ Γ Π A B : Type@i }} )
+| wf_fn :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ , A M : B }} ->
+     {{ Γ λ A M : Π A B }} )
+| wf_app :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ , A B : Type@i }} ->
+     {{ Γ M : Π A B }} ->
+     {{ Γ N : A }} ->
+     {{ Γ M N : B[Id,,N] }} )
+
+| wf_vlookup :
+  `( {{ Γ }} ->
+     {{ #x : A Γ }} ->
+     {{ Γ #x : A }} )
+
+| wf_eq :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ M : A }} ->
+     {{ Γ N : A }} ->
+     {{ Γ Eq A M N : Type@i }})
+| wf_refl :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ M : A }} ->
+     {{ Γ refl A M : Eq A M M }})
+| wf_eqrec :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ M1 : A }} ->
+     {{ Γ M2 : A }} ->
+     {{ Γ N : Eq A M1 M2 }} ->
+     {{ Γ , A , A[Wk], Eq (A[Wk][Wk]) #1 #0 B : Type@j }} ->
+     {{ Γ , A BR : B [Id,,#0,,refl (A[Wk]) #0 ] }} ->
+     {{ Γ eqrec N as Eq A M1 M2 return B | refl -> BR end : B[Id,,M1,,M2,,N] }} )
+
+| wf_exp_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ M : A }} ->
+     {{ Γ M[σ] : A[σ] }} )
+| wf_exp_subtyp :
+  `( {{ Γ M : A }} ->
+     
+ +
+We have this extra argument for soundness. + Note that we need to keep it asymmetric: + only A' is checked. If we check A as well, + we cannot even construct something like + {{ Γ Type@0[Wk] : Type@1 }} with the current + rules. Under the symmetric rule, the example requires + {{ Γ Type@1[Wk] : Type@2 }} to apply wf_exp_sub, + which requires {{ Γ Type@2[Wk] : Type@3 }}, and so on. + +
+
+     {{ Γ A' : Type@i }} ->
+     {{ Γ A A' }} ->
+     {{ Γ M : A' }} )
+where "Γ ⊢ M : A" := (wf_exp Γ A M) (in custom judg) : type_scope
+
+with wf_sub : ctx -> ctx -> sub -> Prop :=
+| wf_sub_id :
+  `( {{ Γ }} ->
+     {{ Γ s Id : Γ }} )
+| wf_sub_weaken :
+  `( {{ Γ , A }} ->
+     {{ Γ , A s Wk : Γ }} )
+| wf_sub_compose :
+  `( {{ Γ1 s σ2 : Γ2 }} ->
+     {{ Γ2 s σ1 : Γ3 }} ->
+     {{ Γ1 s σ1 σ2 : Γ3 }} )
+| wf_sub_extend :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Γ M : A[σ] }} ->
+     {{ Γ s (σ ,, M) : Δ , A }} )
+| wf_sub_subtyp :
+  `( {{ Γ s σ : Δ }} ->
+     
+ +
+As in wf_exp_subtyp, this extra argument is + for soundness. We don't need to keep it asymmetric, + but do so to match with wf_exp_subtyp. + +
+
+     {{ Δ' }} ->
+     {{ Δ Δ' }} ->
+     {{ Γ s σ : Δ' }} )
+where "Γ ⊢s σ : Δ" := (wf_sub Γ Δ σ) (in custom judg) : type_scope
+
+with wf_exp_eq : ctx -> typ -> exp -> exp -> Prop :=
+| wf_exp_eq_typ_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Γ Type@i[σ] Type@i : Type@(S i) }} )
+
+| wf_exp_eq_nat_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Γ [σ] : Type@0 }} )
+| wf_exp_eq_zero_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Γ zero[σ] zero : }} )
+| wf_exp_eq_succ_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ M : }} ->
+     {{ Γ (succ M)[σ] succ (M[σ]) : }} )
+| wf_exp_eq_succ_cong :
+  `( {{ Γ M M' : }} ->
+     {{ Γ succ M succ M' : }} )
+| wf_exp_eq_natrec_cong :
+  `( {{ Γ , A : Type@i }} ->
+     {{ Γ , A A' : Type@i }} ->
+     {{ Γ MZ MZ' : A[Id,,zero] }} ->
+     {{ Γ , , A MS MS' : A[WkWk,,succ(#1)] }} ->
+     {{ Γ M M' : }} ->
+     {{ Γ rec M return A | zero -> MZ | succ -> MS end rec M' return A' | zero -> MZ' | succ -> MS' end : A[Id,,M] }} )
+| wf_exp_eq_natrec_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ , A : Type@i }} ->
+     {{ Δ MZ : A[Id,,zero] }} ->
+     {{ Δ , , A MS : A[WkWk,,succ(#1)] }} ->
+     {{ Δ M : }} ->
+     {{ Γ rec M return A | zero -> MZ | succ -> MS end[σ] rec M[σ] return A[q σ] | zero -> MZ[σ] | succ -> MS[q (q σ)] end : A[σ,,M[σ]] }} )
+| wf_exp_eq_nat_beta_zero :
+  `( {{ Γ , A : Type@i }} ->
+     {{ Γ MZ : A[Id,,zero] }} ->
+     {{ Γ , , A MS : A[WkWk,,succ(#1)] }} ->
+     {{ Γ rec zero return A | zero -> MZ | succ -> MS end MZ : A[Id,,zero] }} )
+| wf_exp_eq_nat_beta_succ :
+  `( {{ Γ , A : Type@i }} ->
+     {{ Γ MZ : A[Id,,zero] }} ->
+     {{ Γ , , A MS : A[WkWk,,succ(#1)] }} ->
+     {{ Γ M : }} ->
+     {{ Γ rec (succ M) return A | zero -> MZ | succ -> MS end MS[Id,,M,,rec M return A | zero -> MZ | succ -> MS end] : A[Id,,succ M] }} )
+
+| wf_exp_eq_pi_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ , A B : Type@i }} ->
+     {{ Γ (Π A B)[σ] Π (A[σ]) (B[q σ]) : Type@i }} )
+| wf_exp_eq_pi_cong :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ A A' : Type@i }} ->
+     {{ Γ , A B B' : Type@i }} ->
+     {{ Γ Π A B Π A' B' : Type@i }} )
+| wf_exp_eq_fn_cong :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ A A' : Type@i }} ->
+     {{ Γ , A M M' : B }} ->
+     {{ Γ λ A M λ A' M' : Π A B }} )
+| wf_exp_eq_fn_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ , A M : B }} ->
+     {{ Γ (λ A M)[σ] λ A[σ] M[q σ] : (Π A B)[σ] }} )
+| wf_exp_eq_app_cong :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ , A B : Type@i }} ->
+     {{ Γ M M' : Π A B }} ->
+     {{ Γ N N' : A }} ->
+     {{ Γ M N M' N' : B[Id,,N] }} )
+| wf_exp_eq_app_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ , A B : Type@i }} ->
+     {{ Δ M : Π A B }} ->
+     {{ Δ N : A }} ->
+     {{ Γ (M N)[σ] M[σ] N[σ] : B[σ,,N[σ]] }} )
+| wf_exp_eq_pi_beta :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ , A B : Type@i }} ->
+     {{ Γ , A M : B }} ->
+     {{ Γ N : A }} ->
+     {{ Γ (λ A M) N M[Id,,N] : B[Id,,N] }} )
+| wf_exp_eq_pi_eta :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ , A B : Type@i }} ->
+     {{ Γ M : Π A B }} ->
+     {{ Γ M λ A (M[Wk] #0) : Π A B }} )
+
+| wf_exp_eq_eq_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ M : A }} ->
+     {{ Δ N : A }} ->
+     {{ Γ (Eq A M N)[σ] Eq (A[σ]) (M[σ]) (N[σ]) : Type@i }} )
+| wf_exp_eq_refl_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ M : A }} ->
+     {{ Γ (refl A M)[σ] refl (A[σ]) (M[σ]) : (Eq A M M)[σ] }} )
+| wf_exp_eq_eqrec_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ M1 : A }} ->
+     {{ Δ M2 : A }} ->
+     {{ Δ N : Eq A M1 M2 }} ->
+     {{ Δ , A , A[Wk], Eq (A[Wk][Wk]) #1 #0 B : Type@j }} ->
+     {{ Δ , A BR : B [Id,,#0,,refl (A[Wk]) #0 ] }} ->
+     {{ Γ (eqrec N as Eq A M1 M2 return B | refl -> BR end)[σ]
+           eqrec (N[σ]) as Eq (A[σ]) (M1[σ]) (M2[σ]) return B[q (q (q σ))] | refl -> BR[q σ] end
+         : B[σ,,M1[σ],,M2[σ],,N[σ]] }} )
+| wf_exp_eq_eq_cong :
+  `( {{ Γ A A' : Type@i }} ->
+     {{ Γ M M' : A }} ->
+     {{ Γ N N' : A }} ->
+     {{ Γ Eq A M N Eq A' M' N' : Type@i }})
+| wf_exp_eq_refl_cong :
+  `( {{ Γ A A' : Type@i }} ->
+     {{ Γ M M' : A }} ->
+     {{ Γ refl A M refl A' M' : Eq A M M }})
+| wf_exp_eq_eqrec_cong :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ M1 : A }} ->
+     {{ Γ M2 : A }} ->
+     {{ Γ A A' : Type@i }} ->
+     {{ Γ M1 M1' : A }} ->
+     {{ Γ M2 M2' : A }} ->
+     {{ Γ N N' : Eq A M1 M2 }} ->
+     {{ Γ , A , A[Wk], Eq (A[Wk][Wk]) #1 #0 B B' : Type@j }} ->
+     {{ Γ , A BR BR' : B [Id,,#0,,refl (A[Wk]) #0 ] }} ->
+     {{ Γ eqrec N as Eq A M1 M2 return B | refl -> BR end
+           eqrec N' as Eq A' M1' M2' return B' | refl -> BR' end
+         : B[Id,,M1,,M2,,N] }} )
+| wf_exp_eq_eqrec_beta :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ M : A }} ->
+     {{ Γ N : Eq A M M }} ->
+     {{ Γ , A , A[Wk], Eq (A[Wk][Wk]) #1 #0 B : Type@j }} ->
+     {{ Γ , A BR : B [Id,,#0,,refl (A[Wk]) #0 ] }} ->
+     {{ Γ eqrec refl A M as Eq A M M return B | refl -> BR end
+           BR[Id,,M]
+         : B[Id,,M,,M,,refl A M] }} )
+
+| wf_exp_eq_var :
+  `( {{ Γ }} ->
+     {{ #x : A Γ }} ->
+     {{ Γ #x #x : A }} )
+| wf_exp_eq_var_0_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Γ M : A[σ] }} ->
+     {{ Γ #0[σ ,, M] M : A[σ] }} )
+| wf_exp_eq_var_S_sub :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Γ M : A[σ] }} ->
+     {{ #x : B Δ }} ->
+     {{ Γ #(S x)[σ ,, M] #x[σ] : B[σ] }} )
+| wf_exp_eq_var_weaken :
+  `( {{ Γ , B }} ->
+     {{ #x : A Γ }} ->
+     {{ Γ , B #x[Wk] #(S x) : A[Wk] }} )
+| wf_exp_eq_sub_cong :
+  `( {{ Δ M M' : A }} ->
+     {{ Γ s σ σ' : Δ }} ->
+     {{ Γ M[σ] M'[σ'] : A[σ] }} )
+| wf_exp_eq_sub_id :
+  `( {{ Γ M : A }} ->
+     {{ Γ M[Id] M : A }} )
+| wf_exp_eq_sub_compose :
+  `( {{ Γ s τ : Γ' }} ->
+     {{ Γ' s σ : Γ'' }} ->
+     {{ Γ'' M : A }} ->
+     {{ Γ M[σ τ] M[σ][τ] : A[σ τ] }} )
+| wf_exp_eq_subtyp :
+  `( {{ Γ M M' : A }} ->
+     {{ Γ A' : Type@i }} ->
+     
+ +
+This extra argument is here to be consistent with + wf_exp_subtyp. + +
+
+     {{ Γ A A' }} ->
+     {{ Γ M M' : A' }} )
+| wf_exp_eq_sym :
+  `( {{ Γ M M' : A }} ->
+     {{ Γ M' M : A }} )
+| wf_exp_eq_trans :
+  `( {{ Γ M M' : A }} ->
+     {{ Γ M' M'' : A }} ->
+     {{ Γ M M'' : A }} )
+where "Γ ⊢ M ≈ M' : A" := (wf_exp_eq Γ A M M') (in custom judg) : type_scope
+
+with wf_sub_eq : ctx -> ctx -> sub -> sub -> Prop :=
+| wf_sub_eq_id :
+  `( {{ Γ }} ->
+     {{ Γ s Id Id : Γ }} )
+| wf_sub_eq_weaken :
+  `( {{ Γ , A }} ->
+     {{ Γ , A s Wk Wk : Γ }} )
+| wf_sub_eq_compose_cong :
+  `( {{ Γ s τ τ' : Γ' }} ->
+     {{ Γ' s σ σ' : Γ'' }} ->
+     {{ Γ s σ τ σ' τ' : Γ'' }} )
+| wf_sub_eq_extend_cong :
+  `( {{ Γ s σ σ' : Δ }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Γ M M' : A[σ] }} ->
+     {{ Γ s (σ ,, M) (σ' ,, M') : Δ , A }} )
+| wf_sub_eq_id_compose_right :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Γ s Id σ σ : Δ }} )
+| wf_sub_eq_id_compose_left :
+  `( {{ Γ s σ : Δ }} ->
+     {{ Γ s σ Id σ : Δ }} )
+| wf_sub_eq_compose_assoc :
+  `( {{ Γ' s σ : Γ }} ->
+     {{ Γ'' s σ' : Γ' }} ->
+     {{ Γ''' s σ'' : Γ'' }} ->
+     {{ Γ''' s (σ σ') σ'' σ (σ' σ'') : Γ }} )
+| wf_sub_eq_extend_compose :
+  `( {{ Γ' s σ : Γ'' }} ->
+     {{ Γ'' A : Type@i }} ->
+     {{ Γ' M : A[σ] }} ->
+     {{ Γ s τ : Γ' }} ->
+     {{ Γ s (σ ,, M) τ ((σ τ) ,, M[τ]) : Γ'' , A }} )
+| wf_sub_eq_p_extend :
+  `( {{ Γ' s σ : Γ }} ->
+     {{ Γ A : Type@i }} ->
+     {{ Γ' M : A[σ] }} ->
+     {{ Γ' s Wk (σ ,, M) σ : Γ }} )
+| wf_sub_eq_extend :
+  `( {{ Γ' s σ : Γ , A }} ->
+     {{ Γ' s σ ((Wk σ) ,, #0[σ]) : Γ , A }} )
+| wf_sub_eq_sym :
+  `( {{ Γ s σ σ' : Δ }} ->
+     {{ Γ s σ' σ : Δ }} )
+| wf_sub_eq_trans :
+  `( {{ Γ s σ σ' : Δ }} ->
+     {{ Γ s σ' σ'' : Δ }} ->
+     {{ Γ s σ σ'' : Δ }} )
+| wf_sub_eq_subtyp :
+  `( {{ Γ s σ σ' : Δ }} ->
+     
+ +
+This extra argument is here to be consistent with + wf_sub_subtyp. + +
+
+     {{ Δ' }} ->
+     {{ Δ Δ' }} ->
+     {{ Γ s σ σ' : Δ' }} )
+where "Γ ⊢s S1 ≈ S2 : Δ" := (wf_sub_eq Γ Δ S1 S2) (in custom judg) : type_scope
+
+with wf_subtyp : ctx -> typ -> typ -> Prop :=
+| wf_subtyp_refl :
+  
+ +
+We need this extra argument in order to prove the lemmas + in CtxSub.v independently. We can prove those and + presupposition lemmas mutually dependently, but that would + be more messy. + +
+ + The main point of this assumption gives presupposition for + RHS directly so that we can remove the extra arguments in + type checking rules immediately. + +
+
+  `( {{ Γ M' : Type@i }} ->
+     {{ Γ M M' : Type@i }} ->
+     {{ Γ M M' }} )
+| wf_subtyp_trans :
+  `( {{ Γ M M' }} ->
+     {{ Γ M' M'' }} ->
+     {{ Γ M M'' }} )
+| wf_subtyp_univ :
+  `( {{ Γ }} ->
+     i < j ->
+     {{ Γ Type@i Type@j }} )
+| wf_subtyp_pi :
+  `( {{ Γ A : Type@i }} ->
+     {{ Γ A' : Type@i }} ->
+     {{ Γ A A' : Type@i }} ->
+     {{ Γ , A B : Type@i }} ->
+     {{ Γ , A' B' : Type@i }} ->
+     {{ Γ , A' B B' }} ->
+     {{ Γ Π A B Π A' B' }} )
+where "Γ ⊢ A ⊆ A'" := (wf_subtyp Γ A A') (in custom judg) : type_scope.
+ +
+Scheme wf_ctx_mut_ind := Induction for wf_ctx Sort Prop
+with wf_ctx_sub_mut_ind := Induction for wf_ctx_sub Sort Prop
+with wf_exp_mut_ind := Induction for wf_exp Sort Prop
+with wf_exp_eq_mut_ind := Induction for wf_exp_eq Sort Prop
+with wf_sub_mut_ind := Induction for wf_sub Sort Prop
+with wf_sub_eq_mut_ind := Induction for wf_sub_eq Sort Prop
+with wf_subtyp_mut_ind := Induction for wf_subtyp Sort Prop.
+Combined Scheme syntactic_wf_mut_ind from
+  wf_ctx_mut_ind,
+  wf_ctx_sub_mut_ind,
+  wf_exp_mut_ind,
+  wf_exp_eq_mut_ind,
+  wf_sub_mut_ind,
+  wf_sub_eq_mut_ind,
+  wf_subtyp_mut_ind.
+ +
+Scheme wf_ctx_mut_ind' := Induction for wf_ctx Sort Prop
+with wf_exp_mut_ind' := Induction for wf_exp Sort Prop
+with wf_sub_mut_ind' := Induction for wf_sub Sort Prop.
+Combined Scheme syntactic_wf_mut_ind' from
+  wf_ctx_mut_ind',
+  wf_exp_mut_ind',
+  wf_sub_mut_ind'.
+ +
+Inductive wf_ctx_eq : ctx -> ctx -> Prop :=
+| wf_ctx_eq_empty : {{ }}
+| wf_ctx_eq_extend :
+  `( {{ Γ Δ }} ->
+     {{ Γ A : Type@i }} ->
+     {{ Γ A' : Type@i }} ->
+     {{ Δ A : Type@i }} ->
+     {{ Δ A' : Type@i }} ->
+     {{ Γ A A' : Type@i }} ->
+     {{ Δ A A' : Type@i }} ->
+     {{ Γ , A Δ , A' }} )
+where "⊢ Γ ≈ Γ'" := (wf_ctx_eq Γ Γ') (in custom judg) : type_scope.
+ +
+#[export]
+Hint Constructors wf_ctx wf_ctx_eq wf_ctx_sub wf_exp wf_sub wf_exp_eq wf_sub_eq wf_subtyp ctx_lookup : mcltt.
+ +
+#[export]
+Instance wf_exp_eq_PER Γ A : PER (wf_exp_eq Γ A).
+Proof.
+  split.
+  - eauto using wf_exp_eq_sym.
+  - eauto using wf_exp_eq_trans.
+Qed.
+ +
+#[export]
+Instance wf_sub_eq_PER Γ Δ : PER (wf_sub_eq Γ Δ).
+Proof.
+  split.
+  - eauto using wf_sub_eq_sym.
+  - eauto using wf_sub_eq_trans.
+Qed.
+ +
+#[export]
+Instance wf_ctx_eq_Symmetric : Symmetric wf_ctx_eq.
+Proof.
+  induction 1; mauto.
+Qed.
+ +
+#[export]
+Instance wf_subtyp_Transitive Γ : Transitive (wf_subtyp Γ).
+Proof.
+  hnf; mauto.
+Qed.
+ +
+
+ +
+Immediate & Independent Presuppositions +
+
+ +
+Lemma presup_ctx_sub : forall {Γ Δ}, {{ Γ Δ }} -> {{ Γ }} /\ {{ Δ }}.
+Proof with mautosolve.
+  induction 1; destruct_pairs...
+Qed.
+ +
+#[export]
+Hint Resolve presup_ctx_sub : mcltt.
+ +
+Lemma presup_ctx_sub_left : forall {Γ Δ}, {{ Γ Δ }} -> {{ Γ }}.
+Proof with easy.
+  intros * ?%presup_ctx_sub...
+Qed.
+ +
+#[export]
+Hint Resolve presup_ctx_sub_left : mcltt.
+ +
+Lemma presup_ctx_sub_right : forall {Γ Δ}, {{ Γ Δ }} -> {{ Δ }}.
+Proof with easy.
+  intros * ?%presup_ctx_sub...
+Qed.
+ +
+#[export]
+Hint Resolve presup_ctx_sub_right : mcltt.
+ +
+Lemma presup_subtyp_right : forall {Γ A B}, {{ Γ A B }} -> exists i, {{ Γ B : Type@i }}.
+Proof with mautosolve.
+  induction 1...
+Qed.
+ +
+#[export]
+Hint Resolve presup_subtyp_right : mcltt.
+ +
+
+ +
+Subtyping Rules without Extra Arguments +
+
+ +
+Lemma wf_exp_subtyp' : forall Γ A A' M,
+    {{ Γ M : A }} ->
+    {{ Γ A A' }} ->
+    {{ Γ M : A' }}.
+Proof.
+  intros.
+  assert (exists i, {{ Γ A' : Type@i }}) as [] by mauto.
+  econstructor; mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_subtyp' : mcltt.
+#[export]
+Remove Hints wf_exp_subtyp : mcltt.
+ +
+Lemma wf_sub_subtyp' : forall Γ Δ Δ' σ,
+    {{ Γ s σ : Δ }} ->
+    {{ Δ Δ' }} ->
+    {{ Γ s σ : Δ' }}.
+Proof.
+  intros.
+  econstructor; mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_sub_subtyp' : mcltt.
+#[export]
+Remove Hints wf_sub_subtyp : mcltt.
+ +
+Lemma wf_exp_eq_subtyp' : forall Γ A A' M M',
+    {{ Γ M M' : A }} ->
+    {{ Γ A A' }} ->
+    {{ Γ M M' : A' }}.
+Proof.
+  intros.
+  assert (exists i, {{ Γ A' : Type@i }}) as [] by mauto.
+  econstructor; mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_subtyp' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_subtyp : mcltt.
+ +
+Lemma wf_sub_eq_subtyp' : forall Γ Δ Δ' σ σ',
+    {{ Γ s σ σ' : Δ }} ->
+    {{ Δ Δ' }} ->
+    {{ Γ s σ σ' : Δ' }}.
+Proof.
+  intros.
+  econstructor; mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_sub_eq_subtyp' : mcltt.
+#[export]
+Remove Hints wf_sub_eq_subtyp : mcltt.
+ +
+Add Parametric Morphism Γ T : (wf_exp_eq Γ T)
+    with signature wf_exp_eq Γ T ==> eq ==> iff as wf_exp_eq_morphism_iff1.
+Proof.
+  split; mauto.
+Qed.
+ +
+Add Parametric Morphism Γ T : (wf_exp_eq Γ T)
+    with signature eq ==> wf_exp_eq Γ T ==> iff as wf_exp_eq_morphism_iff2.
+Proof.
+  split; mauto.
+Qed.
+ +
+Add Parametric Morphism Γ Δ : (wf_sub_eq Γ Δ)
+    with signature wf_sub_eq Γ Δ ==> eq ==> iff as wf_sub_eq_morphism_iff1.
+Proof.
+  split; mauto.
+Qed.
+ +
+Add Parametric Morphism Γ Δ : (wf_sub_eq Γ Δ)
+    with signature eq ==> wf_sub_eq Γ Δ ==> iff as wf_sub_eq_morphism_iff2.
+Proof.
+  split; mauto.
+Qed.
+ +
+#[export]
+Hint Rewrite -> wf_exp_eq_typ_sub wf_exp_eq_nat_sub wf_exp_eq_eq_sub using mauto 3 : mcltt.
+ +
+#[export]
+Hint Rewrite -> wf_sub_eq_id_compose_right wf_sub_eq_id_compose_left
+                  wf_sub_eq_compose_assoc (* prefer right association *)
+                  wf_sub_eq_p_extend using mauto 4 : mcltt.
+ +
+#[export]
+Hint Rewrite -> wf_exp_eq_sub_id wf_exp_eq_pi_sub using mauto 4 : mcltt.
+ +
+#[export]
+Instance wf_exp_eq_per_elem Γ T : PERElem _ (wf_exp Γ T) (wf_exp_eq Γ T).
+Proof.
+  intros a Ha. mauto.
+Qed.
+ +
+#[export]
+Instance wf_sub_eq_per_elem Γ Δ : PERElem _ (wf_sub Γ Δ) (wf_sub_eq Γ Δ).
+Proof.
+  intros a Ha. mauto.
+Qed.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.System.Lemmas.html b/ext/prop-eq/Mcltt.Core.Syntactic.System.Lemmas.html new file mode 100644 index 00000000..e71232b4 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.System.Lemmas.html @@ -0,0 +1,1569 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.System.Lemmas

+ +
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic.System Require Import Definitions.
+Import Syntax_Notations.
+ +
+
+ +
+

Core Presuppositions

+ +
+ +

Basic inversion

+ +
+
+Lemma ctx_decomp : forall {Γ A}, {{ Γ , A }} -> {{ Γ }} /\ exists i, {{ Γ A : Type@i }}.
+Proof with now eauto.
+  inversion 1...
+Qed.
+ +
+#[export]
+Hint Resolve ctx_decomp : mcltt.
+ +
+Corollary ctx_decomp_left : forall {Γ A}, {{ Γ , A }} -> {{ Γ }}.
+Proof with easy.
+  intros * ?%ctx_decomp...
+Qed.
+ +
+Corollary ctx_decomp_right : forall {Γ A}, {{ Γ , A }} -> exists i, {{ Γ A : Type@i }}.
+Proof with easy.
+  intros * ?%ctx_decomp...
+Qed.
+ +
+#[export]
+Hint Resolve ctx_decomp_left ctx_decomp_right : mcltt.
+ +
+
+ +
+

Context Presuppositions

+ +
+
+ +
+Lemma presup_ctx_eq : forall {Γ Δ}, {{ Γ Δ }} -> {{ Γ }} /\ {{ Δ }}.
+Proof with mautosolve.
+  induction 1; destruct_pairs...
+Qed.
+ +
+Corollary presup_ctx_eq_left : forall {Γ Δ}, {{ Γ Δ }} -> {{ Γ }}.
+Proof with easy.
+  intros * ?%presup_ctx_eq...
+Qed.
+ +
+Corollary presup_ctx_eq_right : forall {Γ Δ}, {{ Γ Δ }} -> {{ Δ }}.
+Proof with easy.
+  intros * ?%presup_ctx_eq...
+Qed.
+ +
+#[export]
+Hint Resolve presup_ctx_eq presup_ctx_eq_left presup_ctx_eq_right : mcltt.
+ +
+Lemma presup_sub : forall {Γ Δ σ}, {{ Γ s σ : Δ }} -> {{ Γ }} /\ {{ Δ }}.
+Proof with mautosolve.
+  induction 1; destruct_pairs...
+Qed.
+ +
+Corollary presup_sub_left : forall {Γ Δ σ}, {{ Γ s σ : Δ }} -> {{ Γ }}.
+Proof with easy.
+  intros * ?%presup_sub...
+Qed.
+ +
+Corollary presup_sub_right : forall {Γ Δ σ}, {{ Γ s σ : Δ }} -> {{ Δ }}.
+Proof with easy.
+  intros * ?%presup_sub...
+Qed.
+ +
+#[export]
+Hint Resolve presup_sub presup_sub_left presup_sub_right : mcltt.
+ +
+
+ +
+With presup_sub, we can prove similar for exp. +
+
+ +
+Lemma presup_exp_ctx : forall {Γ M A}, {{ Γ M : A }} -> {{ Γ }}.
+Proof with mautosolve.
+  induction 1...
+Qed.
+ +
+#[export]
+Hint Resolve presup_exp_ctx : mcltt.
+ +
+
+ +
+and other presuppositions about context well-formedness. +
+
+ +
+Lemma presup_sub_eq_ctx : forall {Γ Δ σ σ'}, {{ Γ s σ σ' : Δ }} -> {{ Γ }} /\ {{ Δ }}.
+Proof with mautosolve.
+  induction 1; destruct_pairs...
+Qed.
+ +
+Corollary presup_sub_eq_ctx_left : forall {Γ Δ σ σ'}, {{ Γ s σ σ' : Δ }} -> {{ Γ }}.
+Proof with easy.
+  intros * ?%presup_sub_eq_ctx...
+Qed.
+ +
+Corollary presup_sub_eq_ctx_right : forall {Γ Δ σ σ'}, {{ Γ s σ σ' : Δ }} -> {{ Δ }}.
+Proof with easy.
+  intros * ?%presup_sub_eq_ctx...
+Qed.
+ +
+#[export]
+Hint Resolve presup_sub_eq_ctx presup_sub_eq_ctx_left presup_sub_eq_ctx_right : mcltt.
+ +
+Lemma presup_exp_eq_ctx : forall {Γ M M' A}, {{ Γ M M' : A }} -> {{ Γ }}.
+Proof with mautosolve 2.
+  induction 1...
+Qed.
+ +
+#[export]
+Hint Resolve presup_exp_eq_ctx : mcltt.
+ +
+
+ +
+

Immediate Results of Context Presuppositions

+ +
+ + Recover some rules we had before adding subtyping. + Rest are recovered after presupposition lemmas (in SystemOpt). +
+
+ +
+Lemma wf_cumu : forall Γ A i,
+    {{ Γ A : Type@i }} ->
+    {{ Γ A : Type@(S i) }}.
+Proof with mautosolve.
+  intros.
+  enough {{ Γ }}...
+Qed.
+ +
+Lemma wf_exp_eq_cumu : forall Γ A A' i,
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ A A' : Type@(S i) }}.
+Proof with mautosolve.
+  intros.
+  enough {{ Γ }}...
+Qed.
+ +
+#[export]
+Hint Resolve wf_cumu wf_exp_eq_cumu : mcltt.
+ +
+Lemma wf_ctx_sub_refl : forall Γ Δ,
+    {{ Γ Δ }} ->
+    {{ Γ Δ }}.
+Proof. induction 1; mauto. Qed.
+ +
+#[export]
+Hint Resolve wf_ctx_sub_refl : mcltt.
+ +
+Lemma wf_conv : forall Γ M A i A',
+    {{ Γ M : A }} ->
+    
+ +
+The next argument will be removed in SystemOpt +
+
+    {{ Γ A' : Type@i }} ->
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ M : A' }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve wf_conv : mcltt.
+ +
+Lemma wf_sub_conv : forall Γ σ Δ Δ',
+  {{ Γ s σ : Δ }} ->
+  {{ Δ Δ' }} ->
+  {{ Γ s σ : Δ' }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve wf_sub_conv : mcltt.
+ +
+Lemma wf_exp_eq_conv : forall Γ M M' A A' i,
+   {{ Γ M M' : A }} ->
+   
+ +
+The next argument will be removed in SystemOpt +
+
+   {{ Γ A' : Type@i }} ->
+   {{ Γ A A' : Type@i }} ->
+   {{ Γ M M' : A' }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_conv : mcltt.
+ +
+Lemma wf_sub_eq_conv : forall Γ σ σ' Δ Δ',
+    {{ Γ s σ σ' : Δ }} ->
+    {{ Δ Δ' }} ->
+    {{ Γ s σ σ' : Δ' }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve wf_sub_eq_conv : mcltt.
+ +
+Add Parametric Morphism Γ : (wf_sub_eq Γ)
+    with signature wf_ctx_eq ==> eq ==> eq ==> iff as wf_sub_eq_morphism_iff3.
+Proof.
+  intros Δ Δ' H **; split; [| symmetry in H]; mauto.
+Qed.
+ +
+
+ +
+We can prove some additional lemmas for type presuppositions as well. +
+
+ +
+Lemma lift_exp_ge : forall {Γ A n m},
+    n <= m ->
+    {{ Γ A : Type@n }} ->
+    {{ Γ A : Type@m }}.
+Proof with mautosolve.
+  induction 1...
+Qed.
+ +
+#[export]
+Hint Resolve lift_exp_ge : mcltt.
+ +
+Corollary lift_exp_max_left : forall {Γ A n} m,
+    {{ Γ A : Type@n }} ->
+    {{ Γ A : Type@(max n m) }}.
+Proof with mautosolve.
+  intros.
+  assert (n <= max n m) by lia...
+Qed.
+ +
+Corollary lift_exp_max_right : forall {Γ A} n {m},
+    {{ Γ A : Type@m }} ->
+    {{ Γ A : Type@(max n m) }}.
+Proof with mautosolve.
+  intros.
+  assert (m <= max n m) by lia...
+Qed.
+ +
+Lemma lift_exp_eq_ge : forall {Γ A A' n m},
+    n <= m ->
+    {{ Γ A A': Type@n }} ->
+    {{ Γ A A' : Type@m }}.
+Proof with mautosolve.
+  induction 1; subst...
+Qed.
+ +
+#[export]
+Hint Resolve lift_exp_eq_ge : mcltt.
+ +
+Corollary lift_exp_eq_max_left : forall {Γ A A' n} m,
+    {{ Γ A A' : Type@n }} ->
+    {{ Γ A A' : Type@(max n m) }}.
+Proof with mautosolve.
+  intros.
+  assert (n <= max n m) by lia...
+Qed.
+ +
+Corollary lift_exp_eq_max_right : forall {Γ A A'} n {m},
+    {{ Γ A A' : Type@m }} ->
+    {{ Γ A A' : Type@(max n m) }}.
+Proof with mautosolve.
+  intros.
+  assert (m <= max n m) by lia...
+Qed.
+ +
+
+ +
+

Additional Lemmas for Syntactic PERs

+ +
+
+ +
+Lemma exp_eq_refl : forall {Γ M A},
+    {{ Γ M : A }} ->
+    {{ Γ M M : A }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve exp_eq_refl : mcltt.
+ +
+Lemma exp_eq_trans_typ_max : forall {Γ i i' A A' A''},
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ A' A'' : Type@i' }} ->
+    {{ Γ A A'' : Type@(max i i') }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ A A' : Type@(max i i') }} by eauto using lift_exp_eq_max_left.
+  assert {{ Γ A' A'' : Type@(max i i') }} by eauto using lift_exp_eq_max_right...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_trans_typ_max : mcltt.
+ +
+Lemma sub_eq_refl : forall {Γ σ Δ},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ s σ σ : Δ }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve sub_eq_refl : mcltt.
+ +
+
+ +
+

Lemmas for exp of {{{ Type@i }}}

+ +
+
+ +
+Lemma exp_sub_typ : forall {Δ Γ A σ i},
+    {{ Δ A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ A[σ] : Type@i }}.
+Proof with mautosolve 3.
+  intros.
+  econstructor; mauto 3.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve exp_sub_typ : mcltt.
+ +
+Lemma presup_ctx_lookup_typ : forall {Γ A x},
+    {{ Γ }} ->
+    {{ #x : A Γ }} ->
+    exists i, {{ Γ A : Type@i }}.
+Proof with mautosolve 4.
+  intros * .
+  induction 1; inversion_clear ;
+    [assert {{ Γ, A Type@i[Wk] Type@i : Type@(S i) }} by mauto 4
+    | assert (exists i, {{ Γ A : Type@i }}) as [] by eauto]; econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve presup_ctx_lookup_typ : mcltt.
+ +
+Lemma exp_eq_sub_cong_typ1 : forall {Δ Γ A A' σ i},
+    {{ Δ A A' : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ A[σ] A'[σ] : Type@i }}.
+Proof with mautosolve 3.
+  intros.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+Lemma exp_eq_sub_cong_typ2' : forall {Δ Γ A σ τ i},
+    {{ Δ A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ s σ τ : Δ }} ->
+    {{ Γ A[σ] A[τ] : Type@i }}.
+Proof with mautosolve 3.
+  intros.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+Lemma exp_eq_sub_compose_typ : forall {Ψ Δ Γ A σ τ i},
+    {{ Ψ A : Type@i }} ->
+    {{ Δ s σ : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ A[σ][τ] A[στ] : Type@i }}.
+Proof with mautosolve 3.
+  intros.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_sub_cong_typ1 exp_eq_sub_cong_typ2' exp_eq_sub_compose_typ : mcltt.
+ +
+Lemma exp_eq_typ_sub_sub : forall {Γ Δ Ψ σ τ i},
+    {{ Δ s σ : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ Type@i[σ][τ] Type@i : Type@(S i) }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve exp_eq_typ_sub_sub : mcltt.
+#[export]
+Hint Rewrite -> @exp_eq_sub_compose_typ @exp_eq_typ_sub_sub using mauto 4 : mcltt.
+ +
+Lemma functional_ctx_lookup : forall {Γ A A' x},
+    {{ #x : A Γ }} ->
+    {{ #x : A' Γ }} ->
+    A = A'.
+Proof with mautosolve.
+  intros * Hx Hx'; gen A'.
+  induction Hx as [|* ? IHHx]; intros; inversion_clear Hx';
+    f_equal;
+    intuition.
+Qed.
+ +
+Lemma vlookup_0_typ : forall {Γ i},
+    {{ Γ }} ->
+    {{ Γ, Type@i # 0 : Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  eapply wf_conv; mauto 4.
+  econstructor...
+Qed.
+ +
+Lemma vlookup_1_typ : forall {Γ i A j},
+    {{ Γ, Type@i A : Type@j }} ->
+    {{ Γ, Type@i, A # 1 : Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ, Type@i s Wk : Γ }} by mauto 4.
+  assert {{ Γ, Type@i, A s Wk : Γ, Type@i }} by mauto 4.
+  eapply wf_conv...
+Qed.
+ +
+#[export]
+Hint Resolve vlookup_0_typ vlookup_1_typ : mcltt.
+ +
+Lemma exp_sub_typ_helper : forall {Γ σ Δ M i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : Type@i }} ->
+    {{ Γ M : Type@i[σ] }}.
+Proof.
+  intros.
+  do 2 (econstructor; mauto 4).
+Qed.
+ +
+#[export]
+Hint Resolve exp_sub_typ_helper : mcltt.
+ +
+Lemma exp_eq_var_0_sub_typ : forall {Γ σ Δ M i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : Type@i }} ->
+    {{ Γ #0[σ,,M] M : Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  eapply wf_exp_eq_conv; mauto 3.
+  econstructor...
+Qed.
+ +
+Lemma exp_eq_var_1_sub_typ : forall {Γ σ Δ A i M j},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Γ M : A[σ] }} ->
+    {{ #0 : Type@j[Wk] Δ }} ->
+    {{ Γ #1[σ,,M] #0[σ] : Type@j }}.
+Proof with mautosolve 4.
+  inversion 4 as [? Δ'|]; subst.
+  assert {{ Δ' }} by mauto 4.
+  assert {{ Δ', Type@j s Wk : Δ' }} by mauto 4.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_var_0_sub_typ exp_eq_var_1_sub_typ : mcltt.
+#[export]
+Hint Rewrite -> @exp_eq_var_0_sub_typ @exp_eq_var_1_sub_typ : mcltt.
+ +
+Lemma exp_eq_var_0_weaken_typ : forall {Γ A i},
+    {{ Γ, A }} ->
+    {{ #0 : Type@i[Wk] Γ }} ->
+    {{ Γ, A #0[Wk] #1 : Type@i }}.
+Proof with mautosolve 3.
+  inversion_clear 1.
+  inversion 1 as [? Γ'|]; subst.
+  assert {{ Γ' }} by mauto.
+  assert {{ Γ', Type@i s Wk : Γ' }} by mauto 4.
+  assert {{ Γ', Type@i, A s Wk : Γ', Type@i }} by mauto 4.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_var_0_weaken_typ : mcltt.
+ +
+Lemma sub_extend_typ : forall {Γ σ Δ M i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : Type@i }} ->
+    {{ Γ s σ,,M : Δ, Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve sub_extend_typ : mcltt.
+ +
+Lemma sub_eq_extend_cong_typ : forall {Γ σ σ' Δ M M' i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ s σ σ' : Δ }} ->
+    {{ Γ M M' : Type@i }} ->
+    {{ Γ s σ,,M σ',,M' : Δ, Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  econstructor; mauto 3.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+Lemma sub_eq_extend_compose_typ : forall {Γ τ Γ' σ Γ'' A i M j},
+    {{ Γ' s σ : Γ'' }} ->
+    {{ Γ'' A : Type@i }} ->
+    {{ Γ' M : Type@j }} ->
+    {{ Γ s τ : Γ' }} ->
+    {{ Γ s (σ,,M) τ (σ τ),,M[τ] : Γ'', Type@j }}.
+Proof with mautosolve 4.
+  intros.
+  econstructor...
+Qed.
+ +
+Lemma sub_eq_p_extend_typ : forall {Γ σ Γ' M i},
+    {{ Γ' s σ : Γ }} ->
+    {{ Γ' M : Type@i }} ->
+    {{ Γ' s Wk (σ,,M) σ : Γ }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ Type@i : Type@(S i) }} by mauto.
+  econstructor; mauto 3.
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_extend_cong_typ sub_eq_extend_compose_typ sub_eq_p_extend_typ : mcltt.
+ +
+Lemma sub_eq_wk_var0_id : forall {Γ A i},
+    {{ Γ A : Type@i }} ->
+    {{ Γ, A s Wk,,#0 Id : Γ, A }}.
+Proof with mautosolve 4.
+  intros * ?.
+  assert {{ Γ, A }} by mauto 3.
+  assert {{ Γ, A s (WkId),,#0[Id] Id : Γ, A }} by mauto.
+  assert {{ Γ, A s Wk WkId : Γ }} by mauto.
+  enough {{ Γ, A #0 #0[Id] : A[Wk] }}...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_wk_var0_id : mcltt.
+#[export]
+Hint Rewrite -> @sub_eq_wk_var0_id using mauto 4 : mcltt.
+ +
+Lemma exp_eq_sub_sub_compose_cong_typ : forall {Γ Δ Δ' Ψ σ τ σ' τ' A i},
+    {{ Ψ A : Type@i }} ->
+    {{ Δ s σ : Ψ }} ->
+    {{ Δ' s σ' : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ s τ' : Δ' }} ->
+    {{ Γ s στ σ'τ' : Ψ }} ->
+    {{ Γ A[σ][τ] A[σ'][τ'] : Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ A[σ][τ] A[στ] : Type@i }} by mauto.
+  assert {{ Γ A[στ] A[σ'τ'] : Type@i }} by mauto.
+  enough {{ Γ A[σ'τ'] A[σ'][τ'] : Type@i }}...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_sub_sub_compose_cong_typ : mcltt.
+ +
+
+ +
+

Lemmas for exp of {{{ }}}

+ +
+
+ +
+Lemma exp_sub_nat : forall {Δ Γ M σ},
+    {{ Δ M : }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M[σ] : }}.
+Proof with mautosolve 3.
+  intros.
+  econstructor; mauto 3.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve exp_sub_nat : mcltt.
+ +
+Lemma exp_eq_sub_cong_nat1 : forall {Δ Γ M M' σ},
+    {{ Δ M M' : }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M[σ] M'[σ] : }}.
+Proof with mautosolve 3.
+  intros.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+Lemma exp_eq_sub_cong_nat2 : forall {Δ Γ M σ τ},
+    {{ Δ M : }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ s σ τ : Δ }} ->
+    {{ Γ M[σ] M[τ] : }}.
+Proof with mautosolve.
+  intros.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+Lemma exp_eq_sub_compose_nat : forall {Ψ Δ Γ M σ τ},
+    {{ Ψ M : }} ->
+    {{ Δ s σ : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ M[σ][τ] M[στ] : }}.
+Proof with mautosolve 4.
+  intros.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+#[export]
+Hint Resolve exp_sub_nat exp_eq_sub_cong_nat1 exp_eq_sub_cong_nat2 exp_eq_sub_compose_nat : mcltt.
+ +
+Lemma exp_eq_nat_sub_sub : forall {Γ Δ Ψ σ τ},
+    {{ Δ s σ : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ [σ][τ] : Type@0 }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve exp_eq_nat_sub_sub : mcltt.
+ +
+Lemma exp_eq_nat_sub_sub_to_nat_sub : forall {Γ Δ Ψ Ψ' σ τ σ'},
+    {{ Δ s σ : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ s σ' : Ψ' }} ->
+    {{ Γ [σ][τ] [σ'] : Type@0 }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve exp_eq_nat_sub_sub_to_nat_sub : mcltt.
+ +
+Lemma vlookup_0_nat : forall {Γ},
+    {{ Γ }} ->
+    {{ Γ, # 0 : }}.
+Proof with mautosolve 4.
+  intros.
+  eapply wf_conv; mauto 4.
+  econstructor...
+Qed.
+ +
+Lemma vlookup_1_nat : forall {Γ A i},
+    {{ Γ, A : Type@i }} ->
+    {{ Γ, , A # 1 : }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ, s Wk : Γ }} by mauto 4.
+  assert {{ Γ, , A s Wk : Γ, }} by mauto 4.
+  eapply wf_conv...
+Qed.
+ +
+#[export]
+Hint Resolve vlookup_0_nat vlookup_1_nat : mcltt.
+ +
+Lemma exp_sub_nat_helper : forall {Γ σ Δ M},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : }} ->
+    {{ Γ M : [σ] }}.
+Proof.
+  intros.
+  do 2 (econstructor; mauto 4).
+Qed.
+ +
+#[export]
+Hint Resolve exp_sub_nat_helper : mcltt.
+ +
+Lemma exp_eq_var_0_sub_nat : forall {Γ σ Δ M},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : }} ->
+    {{ Γ #0[σ,,M] M : }}.
+Proof with mautosolve 3.
+  intros.
+  eapply wf_exp_eq_conv; mauto 3.
+  econstructor...
+Qed.
+ +
+Lemma exp_eq_var_1_sub_nat : forall {Γ σ Δ A i M},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Γ M : A[σ] }} ->
+    {{ #0 : [Wk] Δ }} ->
+    {{ Γ #1[σ,,M] #0[σ] : }}.
+Proof with mautosolve 4.
+  inversion 4 as [? Δ'|]; subst.
+  assert {{ Γ #1[σ,, M] #0[σ] : [Wk][σ] }} by mauto 4.
+  assert {{ Γ [Wk][σ] : Type@0 }}...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_var_0_sub_nat exp_eq_var_1_sub_nat : mcltt.
+ +
+Lemma exp_eq_var_0_weaken_nat : forall {Γ A},
+    {{ Γ, A }} ->
+    {{ #0 : [Wk] Γ }} ->
+    {{ Γ, A #0[Wk] #1 : }}.
+Proof with mautosolve 4.
+  inversion 1; subst.
+  inversion 1 as [? Γ'|]; subst.
+  assert {{ Γ', , A #0[Wk] # 1 : [Wk][Wk] }} by mauto 4.
+  assert {{ Γ', , A [Wk][Wk] : Type@0 }}...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_var_0_weaken_nat : mcltt.
+ +
+Lemma sub_extend_nat : forall {Γ σ Δ M},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : }} ->
+    {{ Γ s σ,,M : Δ , }}.
+Proof with mautosolve 3.
+  intros.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve sub_extend_nat : mcltt.
+ +
+Lemma sub_eq_extend_cong_nat : forall {Γ σ σ' Δ M M'},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ s σ σ' : Δ }} ->
+    {{ Γ M M' : }} ->
+    {{ Γ s σ,,M σ',,M' : Δ , }}.
+Proof with mautosolve 4.
+  intros.
+  econstructor; mauto 3.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+Lemma sub_eq_extend_compose_nat : forall {Γ τ Γ' σ Γ'' M},
+    {{ Γ' s σ : Γ'' }} ->
+    {{ Γ' M : }} ->
+    {{ Γ s τ : Γ' }} ->
+    {{ Γ s (σ,,M) τ (σ τ),,M[τ] : Γ'' , }}.
+Proof with mautosolve 3.
+  intros.
+  econstructor...
+Qed.
+ +
+Lemma sub_eq_p_extend_nat : forall {Γ σ Γ' M},
+    {{ Γ' s σ : Γ }} ->
+    {{ Γ' M : }} ->
+    {{ Γ' s Wk (σ,,M) σ : Γ }}.
+Proof with mautosolve 3.
+  intros.
+  assert {{ Γ : Type@0 }} by mauto.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_extend_cong_nat sub_eq_extend_compose_nat sub_eq_p_extend_nat : mcltt.
+ +
+Lemma exp_eq_sub_sub_compose_cong_nat : forall {Γ Δ Δ' Ψ σ τ σ' τ' M},
+    {{ Ψ M : }} ->
+    {{ Δ s σ : Ψ }} ->
+    {{ Δ' s σ' : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ s τ' : Δ' }} ->
+    {{ Γ s στ σ'τ' : Ψ }} ->
+    {{ Γ M[σ][τ] M[σ'][τ'] : }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ M[σ][τ] M[στ] : }} by mauto.
+  assert {{ Γ M[στ] M[σ'τ'] : }} by mauto.
+  enough {{ Γ M[σ'τ'] M[σ'][τ'] : }}...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_sub_sub_compose_cong_nat : mcltt.
+ +
+
+ +
+

Other Tedious Lemmas

+ +
+
+ +
+Lemma exp_eq_sub_sub_compose_cong : forall {Γ Δ Δ' Ψ σ τ σ' τ' M A i},
+    {{ Ψ A : Type@i }} ->
+    {{ Ψ M : A }} ->
+    {{ Δ s σ : Ψ }} ->
+    {{ Δ' s σ' : Ψ }} ->
+    {{ Γ s τ : Δ }} ->
+    {{ Γ s τ' : Δ' }} ->
+    {{ Γ s στ σ'τ' : Ψ }} ->
+    {{ Γ M[σ][τ] M[σ'][τ'] : A[στ] }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ A[στ] A[σ'τ'] : Type@i }} by mauto.
+  assert {{ Γ M[σ][τ] M[στ] : A[στ] }} by mauto.
+  assert {{ Γ M[στ] M[σ'τ'] : A[στ] }} by mauto.
+  assert {{ Γ M[σ'τ'] M[σ'][τ'] : A[σ'τ'] }} by mauto.
+  enough {{ Γ M[σ'τ'] M[σ'][τ'] : A[στ] }} by mauto.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_sub_sub_compose_cong : mcltt.
+ +
+Lemma ctxeq_ctx_lookup : forall {Γ Δ A x},
+    {{ Γ Δ }} ->
+    {{ #x : A Γ }} ->
+    exists B i,
+      {{ #x : B Δ }} /\
+        {{ Γ A B : Type@i }} /\
+        {{ Δ A B : Type@i }}.
+Proof with mautosolve.
+  intros * HΓΔ Hx; gen Δ.
+  induction Hx as [|* ? IHHx]; inversion_clear 1 as [|? ? ? ? ? HΓΔ'];
+    [|specialize (IHHx _ HΓΔ')]; destruct_conjs; repeat eexists...
+Qed.
+ +
+#[export]
+Hint Resolve ctxeq_ctx_lookup : mcltt.
+ +
+Lemma sub_id_on_typ : forall {Γ M A i},
+    {{ Γ A : Type@i }} ->
+    {{ Γ M : A }} ->
+    {{ Γ M : A[Id] }}.
+Proof with mautosolve 4.
+  intros.
+  eapply wf_conv...
+Qed.
+ +
+#[export]
+Hint Resolve sub_id_on_typ : mcltt.
+ +
+Lemma sub_id_extend : forall {Γ M A i},
+    {{ Γ A : Type@i }} ->
+    {{ Γ M : A }} ->
+    {{ Γ s Id,,M : Γ, A }}.
+Proof with mautosolve 4.
+  intros.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve sub_id_extend : mcltt.
+ +
+Lemma sub_eq_p_id_extend : forall {Γ M A i},
+    {{ Γ A : Type@i }} ->
+    {{ Γ M : A }} ->
+    {{ Γ s Wk (Id,,M) Id : Γ }}.
+Proof with mautosolve 4.
+  intros.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_p_id_extend : mcltt.
+#[export]
+Hint Rewrite -> @sub_eq_p_id_extend using mauto 4 : mcltt.
+ +
+Lemma sub_q : forall {Γ A i σ Δ},
+    {{ Δ A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, A[σ] s q σ : Δ, A }}.
+Proof with mautosolve 3.
+  intros.
+  assert {{ Γ A[σ] : Type@i }} by mauto 4.
+  assert {{ Γ, A[σ] s Wk : Γ }} by mauto 4.
+  assert {{ Γ, A[σ] # 0 : A[σ][Wk] }} by mauto 4.
+  econstructor; mauto 3.
+  eapply wf_conv...
+Qed.
+ +
+Lemma sub_q_typ : forall {Γ σ Δ i},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, Type@i s q σ : Δ, Type@i }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ }} by mauto 3.
+  assert {{ Γ, Type@i s Wk : Γ }} by mauto 4.
+  assert {{ Γ, Type@i s σ Wk : Δ }} by mauto 4.
+  assert {{ Γ, Type@i # 0 : Type@i[Wk] }} by mauto 4.
+  assert {{ Γ, Type@i # 0 : Type@i }}...
+Qed.
+ +
+Lemma sub_q_nat : forall {Γ σ Δ},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, s q σ : Δ, }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ }} by mauto 3.
+  assert {{ Γ, s Wk : Γ }} by mauto 4.
+  assert {{ Γ, s σ Wk : Δ }} by mauto 4.
+  assert {{ Γ, # 0 : [Wk] }} by mauto 4.
+  assert {{ Γ, # 0 : }}...
+Qed.
+ +
+#[export]
+Hint Resolve sub_q sub_q_typ sub_q_nat : mcltt.
+ +
+Lemma exp_eq_var_1_sub_q_sigma_nat : forall {Γ A i σ Δ},
+    {{ Δ, A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, , A[q σ] #1[q (q σ)] #1 : }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ, s q σ : Δ, }} by mauto.
+  assert {{ Γ, , A[q σ] }} by mauto 3.
+  assert {{ Δ, #0 : }} by mauto.
+  assert {{ Γ, , A[q σ] #0 : A[q σ][Wk] }} by mauto 4.
+  assert {{ Γ, , A[q σ] A[q σWk] A[q σ][Wk] : Type@i }} by mauto 4.
+  assert {{ Γ, , A[q σ] #0 : A[q σWk] }} by (eapply wf_conv; mauto 4).
+  assert {{ Γ, , A[q σ] s q σWk : Δ, }} by mauto 4.
+  assert {{ Γ, , A[q σ] #1[q (q σ)] #0[q σWk] : }} by mauto 4.
+  assert {{ Γ, , A[q σ] #0[q σWk] #0[q σ][Wk] : }} by mauto 4.
+  assert {{ Γ, s σWk : Δ }} by mauto 4.
+  assert {{ Γ, #0 : [σWk] }} by (eapply wf_conv; mauto 4).
+  assert {{ Γ, #0[q σ] #0 : }} by mauto 4.
+  assert {{ Γ, , A[q σ] #0[q σ][Wk] #0[Wk] : }} by mauto 4.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve exp_eq_var_1_sub_q_sigma_nat : mcltt.
+ +
+Lemma sub_id_extend_zero : forall {Γ},
+    {{ Γ }} ->
+    {{ Γ s Id,,zero : Γ, }}.
+Proof. mauto. Qed.
+ +
+Lemma sub_weak_compose_weak_extend_succ_var_1 : forall {Γ A i},
+    {{ Γ, A : Type@i }} ->
+    {{ Γ, , A s (Wk Wk),,succ #1 : Γ, }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ, , A s Wk : Γ, }} by mauto 4.
+  enough {{ Γ, , A s Wk Wk : Γ }}...
+Qed.
+ +
+Lemma sub_eq_id_extend_nat_compose_sigma : forall {Γ M σ Δ},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ M : }} ->
+    {{ Γ s (Id,,M) σ σ,,M[σ] : Δ, }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ s (Id,,M) σ (Id σ),,M[σ] : Δ, }} by mauto 4.
+  enough {{ Γ s (Id σ),,M[σ] σ,,M[σ] : Δ, }} by mauto 4.
+  eapply sub_eq_extend_cong_nat...
+Qed.
+ +
+Lemma sub_eq_id_extend_compose_sigma : forall {Γ M A σ Δ i},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Δ M : A }} ->
+    {{ Γ s (Id,,M) σ σ,,M[σ] : Δ, A }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Δ s Id : Δ }} by mauto.
+  assert {{ Δ M : A[Id] }} by mauto.
+  assert {{ Γ s (Id,,M) σ (Id σ),,M[σ] : Δ, A }} by mauto 3.
+  assert {{ Γ M[σ] : A[Id][σ] }} by mauto.
+  assert {{ Γ A[Id][σ] A[Idσ] : Type@i }} by mauto.
+  assert {{ Γ M[σ] : A[Idσ] }} by mauto 4.
+  enough {{ Γ M[σ] M[σ] : A[Idσ] }}...
+Qed.
+ +
+#[export]
+Hint Resolve sub_id_extend_zero sub_weak_compose_weak_extend_succ_var_1 sub_eq_id_extend_nat_compose_sigma sub_eq_id_extend_compose_sigma : mcltt.
+ +
+Lemma sub_eq_sigma_compose_weak_id_extend : forall {Γ M A i σ Δ},
+    {{ Γ A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : A }} ->
+    {{ Γ s (σ Wk) (Id,,M) σ : Δ }}.
+Proof with mautosolve.
+  intros.
+  assert {{ Γ s Id,,M : Γ, A }} by mauto.
+  assert {{ Γ s (σ Wk) (Id,,M) σ (Wk (Id,,M)) : Δ }} by mauto 4.
+  assert {{ Γ s Wk (Id,,M) Id : Γ }} by mauto.
+  enough {{ Γ s σ (Wk (Id,,M)) σ Id : Δ }} by mauto.
+  econstructor...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_sigma_compose_weak_id_extend : mcltt.
+ +
+Lemma sub_eq_q_sigma_id_extend : forall {Γ M A i σ Δ},
+    {{ Δ A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ M : A[σ] }} ->
+    {{ Γ s q σ (Id,,M) σ,,M : Δ, A }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ }} by mauto 3.
+  assert {{ Γ A[σ] : Type@i }} by mauto.
+  assert {{ Γ M : A[σ] }} by mauto.
+  assert {{ Γ s Id,,M : Γ, A[σ] }} by mauto.
+  assert {{ Γ, A[σ] s Wk : Γ }} by mauto.
+  assert {{ Γ, A[σ] #0 : A[σ][Wk] }} by mauto.
+  assert {{ Γ, A[σ] #0 : A[σWk] }} by (eapply wf_conv; mauto 3).
+  assert {{ Γ s q σ (Id,,M) ((σ Wk) (Id,,M)),,#0[Id,,M] : Δ, A }} by mauto.
+  assert {{ Γ s (σ Wk) (Id,,M) σ : Δ }} by mauto.
+  assert {{ Γ M : A[σ][Id] }} by mauto 4.
+  assert {{ Γ #0[Id,,M] M : A[σ][Id] }} by mauto 3.
+  assert {{ Γ #0[Id,,M] M : A[σ] }} by mauto.
+  enough {{ Γ #0[Id,,M] M : A[(σ Wk) (Id,,M)] }} by mauto.
+  eapply wf_exp_eq_conv...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_q_sigma_id_extend : mcltt.
+#[export]
+Hint Rewrite -> @sub_eq_q_sigma_id_extend using mauto 4 : mcltt.
+ +
+Lemma sub_eq_p_q_sigma : forall {Γ A i σ Δ},
+    {{ Δ A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, A[σ] s Wk q σ σ Wk : Δ }}.
+Proof with mautosolve 3.
+  intros.
+  assert {{ Γ, A[σ] s Wk : Γ }} by mauto 4.
+  assert {{ Γ, A[σ] #0 : A[σ][Wk] }} by mauto 3.
+  enough {{ Γ, A[σ] #0 : A[σ Wk] }} by mauto.
+  eapply wf_conv...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_p_q_sigma : mcltt.
+ +
+Lemma sub_eq_p_q_sigma_nat : forall {Γ σ Δ},
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, s Wk q σ σ Wk : Δ }}.
+Proof with mautosolve.
+  intros.
+  assert {{ Γ, #0 : }}...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_p_q_sigma_nat : mcltt.
+ +
+Lemma sub_eq_p_p_q_q_sigma_nat : forall {Γ A i σ Δ},
+    {{ Δ, A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, , A[q σ] s Wk (Wk q (q σ)) (σ Wk) Wk : Δ }}.
+Proof with mautosolve 3.
+  intros.
+  assert {{ Γ, A[q σ] : Type@i }} by mauto.
+  assert {{ Γ, , A[q σ] }} by mauto 3.
+  assert {{ Δ, }} by mauto 3.
+  assert {{ Γ, , A[q σ] s Wkq (q σ) q σ Wk : Δ, }} by mauto.
+  assert {{ Γ, , A[q σ] s Wk(Wkq (q σ)) Wk (q σ Wk) : Δ }} by mauto 3.
+  assert {{ Δ, s Wk : Δ }} by mauto.
+  assert {{ Γ, s q σ : Δ, }} by mauto.
+  assert {{ Γ, , A[q σ] s Wk (q σ Wk) (Wk q σ) Wk : Δ }} by mauto 4.
+  assert {{ Γ, s Wk q σ σ Wk : Δ }} by mauto.
+  enough {{ Γ, , A[q σ] s (Wk q σ) Wk (σ Wk) Wk : Δ }}...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_p_p_q_q_sigma_nat : mcltt.
+ +
+Lemma sub_eq_q_sigma_compose_weak_weak_extend_succ_var_1 : forall {Γ A i σ Δ},
+    {{ Δ, A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, , A[q σ] s q σ ((Wk Wk),,succ #1) ((Wk Wk),,succ #1) q (q σ) : Δ, }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Δ, , A }} by mauto 3.
+  assert {{ Γ, }} by mauto 3.
+  assert {{ Γ, s Wk : Γ }} by mauto 3.
+  assert {{ Γ, s σWk : Δ }} by mauto 3.
+  assert {{ Γ, A[q σ] : Type@i }} by mauto 3.
+  set (Γ' := {{{ Γ, , A[q σ] }}}).
+  set (WkWksucc := {{{ (WkWk),,succ #1 }}}).
+  assert {{ Γ' }} by mauto 2.
+  assert {{ Γ' s WkWk : Γ }} by mauto 4.
+  assert {{ Γ' s WkWksucc : Γ, }} by mauto.
+  assert {{ Γ, #0 : }} by mauto.
+  assert {{ Γ' s q σWkWksucc ((σWk)WkWksucc),,#0[WkWksucc] : Δ, }} by mautosolve 3.
+  assert {{ Γ' #1 : [Wk][Wk] }} by mauto.
+  assert {{ Γ' [Wk][Wk] : Type@0 }} by mauto 3.
+  assert {{ Γ' #1 : }} by mauto 2.
+  assert {{ Γ' succ #1 : }} by mauto.
+  assert {{ Γ' s WkWkWksucc : Γ }} by mauto 4.
+  assert {{ Γ' s WkWkWksucc WkWk : Γ }} by mauto 4.
+  assert {{ Γ s σ σ : Δ }} by mauto.
+  assert {{ Γ' s σ(WkWkWksucc) σ(WkWk) : Δ }} by mauto 3.
+  assert {{ Γ' s (σWk)WkWksucc σ(WkWk) : Δ }} by mauto 3.
+  assert {{ Γ' s σ(WkWk) (σWk)Wk : Δ }} by mauto 4.
+  assert {{ Γ' s (σWk)Wk Wk(Wkq (q σ)) : Δ }} by mauto.
+  assert {{ Δ, s Wk : Δ }} by mauto 4.
+  assert {{ Δ, , A s Wk : Δ, }} by mauto 4.
+  assert {{ Δ, , A s WkWk : Δ }} by mauto 4.
+  assert {{ Γ' s q (q σ) : Δ, , A }} by mauto.
+  assert {{ Γ' s Wk(Wkq (q σ)) (WkWk)q (q σ) : Δ }} by mauto 3.
+  assert {{ Γ' s σ(WkWk) (WkWk)q (q σ) : Δ }} by mauto 3.
+  assert {{ Γ' #0[WkWksucc] succ #1 : }} by mauto.
+  assert {{ Γ' succ #1[q (q σ)] succ #1 : }} by mauto 3.
+  assert {{ Δ, , A #1 : }} by mauto 2.
+  assert {{ Γ' succ #1 (succ #1)[q (q σ)] : }} by mauto 4.
+  assert {{ Γ' #0[WkWksucc] (succ #1)[q (q σ)] : }} by mauto 2.
+  assert {{ Γ' s (σWk)WkWksucc : Δ }} by mauto 3.
+  assert {{ Γ' s ((σWk)WkWksucc),,#0[WkWksucc] ((WkWk)q (q σ)),,(succ #1)[q (q σ)] : Δ, }} by mauto 3.
+  assert {{ Δ, , A #1 : [Wk][Wk] }} by mauto 4.
+  assert {{ Δ, , A [Wk][Wk] : Type@0 }} by mauto 3.
+  assert {{ Δ, , A succ #1 : }} by mauto.
+  enough {{ Γ' s ((WkWk)q (q σ)),,(succ #1)[q (q σ)] WkWksuccq (q σ) : Δ, }}...
+Qed.
+ +
+#[export]
+Hint Resolve sub_eq_q_sigma_compose_weak_weak_extend_succ_var_1 : mcltt.
+ +
+
+ +
+

Lemmas for wf_subtyp

+ +
+
+ +
+Fact wf_subtyp_refl : forall {Γ A i},
+    {{ Γ A : Type@i }} ->
+    {{ Γ A A }}.
+Proof. mauto. Qed.
+ +
+#[export]
+Hint Resolve wf_subtyp_refl : mcltt.
+ +
+Lemma wf_subtyp_ge : forall {Γ i j},
+    {{ Γ }} ->
+    i <= j ->
+    {{ Γ Type@i Type@j }}.
+Proof.
+  induction 2; mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve wf_subtyp_ge : mcltt.
+ +
+Lemma wf_subtyp_sub : forall {Δ A A'},
+    {{ Δ A A' }} ->
+    forall Γ σ,
+    {{ Γ s σ : Δ }} ->
+    {{ Γ A[σ] A'[σ] }}.
+Proof.
+  induction 1; intros; mauto 4.
+  - transitivity {{{ Type@i }}}; [econstructor; mauto 4 |].
+    transitivity {{{ Type@j }}}; [| econstructor; mauto 4].
+    mauto 3.
+  - transitivity {{{ Π (A[σ]) (B[q σ]) }}}; [econstructor; mauto |].
+    transitivity {{{ Π (A'[σ]) (B'[q σ]) }}}; [ | econstructor; mauto 4].
+    eapply wf_subtyp_pi with (i := i); mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve wf_subtyp_sub : mcltt.
+ +
+Lemma wf_subtyp_univ_weaken : forall {Γ i j A},
+    {{ Γ Type@i Type@j }} ->
+    {{ Γ, A }} ->
+    {{ Γ, A Type@i Type@j }}.
+Proof.
+  intros.
+  eapply wf_subtyp_sub with (σ := {{{ Wk }}}) in H.
+  - transitivity {{{ Type@i[Wk] }}}; [econstructor; mauto |].
+    etransitivity; mauto.
+  - mauto.
+Qed.
+ +
+Lemma ctx_sub_ctx_lookup : forall {Γ Δ},
+    {{ Δ Γ }} ->
+    forall {A x},
+      {{ #x : A Γ }} ->
+      exists B,
+        {{ #x : B Δ }} /\
+          {{ Δ B A }}.
+Proof with (do 2 eexists; repeat split; mautosolve).
+  induction 1; intros * Hx; progressive_inversion.
+  dependent destruction Hx.
+  - idtac...
+  - edestruct IHwf_ctx_sub as [? []]; try eassumption...
+Qed.
+ +
+#[export]
+Hint Resolve ctx_sub_ctx_lookup : mcltt.
+ +
+Lemma sub_lookup_var0 : forall Δ Γ σ M1 M2 B i,
+    {{Δ s σ : Γ}} ->
+    {{Γ B : Type@i}} ->
+    {{Δ M1 : B[σ]}} ->
+    {{Δ M2 : B[σ]}} ->
+    {{Δ #0[σ,,M1,,M2] M2 : B[σ]}}.
+Proof.
+  intros.
+  assert {{ Γ , B B[Wk] : Type@i }} by mauto.
+  assert {{ Δ s σ ,, M1 : Γ, B}} by mauto 4.
+  assert {{ Δ B[Wk][σ,,M1] : Type @ i }} by mauto 4.
+  assert {{ Δ B[Wk][σ,,M1] B[σ] : Type @ i }}.
+  {
+    transitivity {{{B[Wk (σ,,M1)]}}}.
+    - eapply exp_eq_sub_compose_typ; mauto 4.
+    - eapply exp_eq_sub_cong_typ2'; mauto 4.
+  }
+  eapply wf_exp_eq_conv;
+    [eapply wf_exp_eq_var_0_sub with (A := {{{B[Wk]}}}) | |];
+    mauto 4.
+Qed.
+ +
+Lemma id_sub_lookup_var0 : forall Γ M1 M2 B i,
+    {{Γ B : Type@i}} ->
+    {{Γ M1 : B}} ->
+    {{Γ M2 : B}} ->
+    {{Γ #0[Id,,M1,,M2] M2 : B}}.
+Proof.
+  intros.
+  eapply wf_exp_eq_conv;
+    [eapply sub_lookup_var0 | |];
+    mauto 3.
+Qed.
+ +
+Lemma sub_lookup_var1 : forall Δ Γ σ M1 M2 B i,
+    {{Δ s σ : Γ}} ->
+    {{Γ B : Type@i}} ->
+    {{Δ M1 : B[σ]}} ->
+    {{Δ M2 : B[σ]}} ->
+    {{Δ #1[σ,,M1,,M2] M1 : B[σ]}}.
+Proof.
+  intros.
+  assert {{ Γ , B B[Wk] : Type@i }} by mauto.
+  assert {{ Δ s σ ,, M1 : Γ, B}} by mauto 4.
+  assert {{ Δ B[Wk][σ,,M1] : Type @ i }} by mauto 4.
+  assert {{ Δ B[Wk][σ,,M1] B[σ] : Type @ i }}.
+  {
+    transitivity {{{B[Wk (σ,,M1)]}}}.
+    - eapply exp_eq_sub_compose_typ; mauto 4.
+    - eapply exp_eq_sub_cong_typ2'; mauto 4.
+  }
+  transitivity {{{#0[σ,,M1]}}}.
+  - eapply wf_exp_eq_conv;
+      [eapply wf_exp_eq_var_S_sub | |];
+      mauto 4.
+  - eapply wf_exp_eq_conv;
+    [eapply wf_exp_eq_var_0_sub with (A := B) | |];
+    mauto 2.
+    mauto.
+Qed.
+ +
+Lemma id_sub_lookup_var1 : forall Γ M1 M2 B i,
+    {{Γ B : Type@i}} ->
+    {{Γ M1 : B}} ->
+    {{Γ M2 : B}} ->
+    {{Γ #1[Id,,M1,,M2] M1 : B}}.
+Proof.
+  intros.
+  eapply wf_exp_eq_conv;
+    [eapply sub_lookup_var1 | |];
+    mauto 3.
+Qed.
+ +
+Lemma exp_eq_var_1_sub_q_sigma : forall {Γ A i B j σ Δ},
+    {{ Δ B : Type@j }} ->
+    {{ Δ, B A : Type@i }} ->
+    {{ Γ s σ : Δ }} ->
+    {{ Γ, B[σ], A[q σ] #1[q (q σ)] #1 : B[σ][Wk][Wk] }}.
+Proof with mautosolve 4.
+  intros.
+  assert {{ Γ, B[σ] s q σ : Δ, B }} by mauto.
+  assert {{ Γ, B[σ], A[q σ] }} by mauto 3.
+  assert {{ Δ, B B[Wk] : Type@j }} by mauto.
+  assert {{ Δ, B #0 : B[Wk] }} by mauto.
+  assert {{ Γ, B[σ], A[q σ] #0 : A[q σ][Wk] }} by mauto 4.
+  assert {{ Γ, B[σ], A[q σ] A[q σWk] A[q σ][Wk] : Type@i }} by mauto 4.
+  assert {{ Γ, B[σ], A[q σ] #0 : A[q σWk] }} by (eapply wf_conv; mauto 4).
+  assert {{ Γ, B[σ], A[q σ] s q σWk : Δ, B }} by mauto 4.
+  assert {{ Γ B[σ] : Type@j }} by mauto 3.
+  assert {{ Γ,B[σ] B[σ][Wk] : Type@j }} by mauto 4.
+  assert {{Γ, B[σ], A[q σ] B[σ][Wk][Wk] : Type@j}} by mauto 4.
+  assert {{Γ, B[σ],A[q σ] B[Wk][q σ Wk] : Type@j}} by mauto.
+  assert {{Γ, B[σ] B[Wk][q σ] B[σ][Wk] : Type@j}}.
+  {
+    transitivity {{{B[Wk q σ]}}};
+      [mauto 4 | transitivity {{{B[σ Wk]}}}];
+      [eapply exp_eq_sub_cong_typ2'; mauto 4 | mauto].
+  }
+  assert {{Γ, B[σ],A[q σ] B[Wk][q σ Wk] B[σ][Wk][Wk] : Type@j}}.
+  {
+    transitivity {{{B[Wk][q σ][Wk]}}};
+      [mauto 4 |].
+    eapply exp_eq_sub_cong_typ1; mauto 3.
+  }
+  assert {{ Γ, B[σ], A[q σ] #1[q (q σ)] #0[q σWk] : B[σ][Wk][Wk] }} by mauto 3.
+  assert {{ Γ, B[σ], A[q σ] #0[q σWk] #0[q σ][Wk] : B[σ][Wk][Wk] }} by mauto 4.
+  assert {{ Γ, B[σ] s σWk : Δ }} by mauto 4.
+  assert {{ Γ, B[σ] #0 : B[σWk] }}.
+  {
+    eapply wf_conv with (A:={{{B[σ][Wk]}}}); mauto 2; mauto 4.
+  }
+  assert {{ Γ, B[σ] #0[q σ] #0 : B[σ Wk] }} by mauto 4.
+  assert {{ Γ, B[σ], A[q σ] #0[q σ][Wk] #0[Wk] : B[σ Wk][Wk] }} by mauto 4.
+  assert {{ Γ, B[σ], A[q σ] B[σ Wk][Wk] B[σ][Wk][Wk] : Type@j}}.
+  {
+    eapply exp_eq_sub_cong_typ1; mauto 3.
+    symmetry.
+    mauto 4.
+  }
+  assert {{ Γ, B[σ], A[q σ] #0[q σ][Wk] #0[Wk] : B[σ][Wk][Wk] }} by mauto 4.
+  etransitivity; mauto 2.
+  transitivity {{{#0[q σ][Wk]}}}; mauto 3.
+Qed.
+ +
+
+ +
+

Types Presuppositions

+ +
+
+ +
+Lemma presup_exp_typ : forall {Γ M A},
+    {{ Γ M : A }} ->
+    exists i, {{ Γ A : Type@i }}.
+Proof.
+  induction 1; assert {{ Γ }} by mauto 3; destruct_conjs; mauto 3.
+  - enough {{ Γ s Id,,M : Γ, }}; mauto 3.
+  - eexists; mauto 4 using lift_exp_max_left, lift_exp_max_right.
+  - enough {{ Γ s Id,,N : Γ, A }}; mauto 3.
+  - assert {{ Γ s Id,,M1 : Γ, A }} by mauto 3.
+    assert {{ Γ, A s Wk : Γ }} by mauto 3.
+    assert {{ Γ, A A[Wk] : Type@i }} by mauto 3.
+    assert {{ Γ, A, A[Wk] s Wk : Γ, A }} by mauto 4.
+    assert {{ Γ, A, A[Wk] A[Wk][Wk] : Type@i }} by mauto 3.
+    assert {{ Γ A[Wk][Id,,M1] : Type@i }} by mauto 3.
+    assert {{ Γ A[Wk][Id,,M1] A : Type@i }}.
+    {
+      transitivity {{{ A[Wk(Id,,M1)] }}}; mauto 3.
+      transitivity {{{ A[Id] }}}; mauto 4.
+    }
+    assert {{ Γ s Id,,M1,,M2 : Γ, A, A[Wk] }} by mauto 4.
+    assert {{ Γ A[Wk][Wk][Id ,, M1 ,, M2] A : Type@i }}.
+    {
+      transitivity {{{ A[Wk][Wk(Id,,M1,,M2)] }}}; mauto 3.
+      transitivity {{{ A[Wk][Id,,M1] }}}; mauto 3.
+      eapply exp_eq_sub_cong_typ2'; mauto 4.
+    }
+    enough {{ Γ s Id,,M1,,M2,,N : Γ, A, A[Wk], Eq A[Wk][Wk] #1 #0 }} by mauto 3.
+    assert {{ Γ, A, A[Wk] Eq A[Wk][Wk] #1 #0 : Type@i }} by (econstructor; mauto 4).
+    econstructor; mauto 3.
+    eapply wf_conv; mauto 2.
+    transitivity {{{ Eq A[Wk][Wk][Id,,M1,,M2] #1[Id,,M1,,M2] #0[Id,,M1,,M2] }}}.
+    + econstructor; mauto 3 using id_sub_lookup_var0, id_sub_lookup_var1.
+    + symmetry; econstructor; mauto 4.
+Qed.
+ +
+Lemma presup_exp : forall {Γ M A},
+    {{ Γ M : A }} ->
+    {{ Γ }} /\ exists i, {{ Γ A : Type@i }}.
+Proof.
+  mauto 4 using presup_exp_typ.
+Qed.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.System.Tactics.html b/ext/prop-eq/Mcltt.Core.Syntactic.System.Tactics.html new file mode 100644 index 00000000..8c8bd885 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.System.Tactics.html @@ -0,0 +1,73 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.System.Tactics

+ +
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic.System Require Export Definitions Lemmas.
+Import Syntax_Notations.
+ +
+#[global]
+Ltac pi_univ_level_tac :=
+  match goal with
+  | |- {{ ~_ s ~_ : ~_ }} => mauto 4
+  | H : {{ ~?Δ ~?A : Type@?j }} |- {{ ~?Δ , ~?A ~?B : Type@?i }} =>
+      eapply lift_exp_max_right; mauto 4
+  | |- {{ ~?Δ ~?A : Type@?j }} =>
+      eapply lift_exp_max_left; mauto 4
+  end.
+ +
+#[export]
+Hint Rewrite -> wf_exp_eq_pi_sub using pi_univ_level_tac : mcltt.
+ +
+#[local]
+Ltac invert_wf_ctx1 H :=
+  match type of H with
+  | {{ ~_ , ~_ }} =>
+      let H' := fresh "H" in
+      pose proof H as H';
+      progressive_invert H'
+  end.
+ +
+Ltac invert_wf_ctx :=
+  (on_all_hyp: fun H => invert_wf_ctx1 H);
+  clear_dups.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.System.html b/ext/prop-eq/Mcltt.Core.Syntactic.System.html new file mode 100644 index 00000000..004a75a2 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.System.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.System

+ +
+From Mcltt.Core.Syntactic.System Require Export Definitions Lemmas Tactics.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.Core.Syntactic.SystemOpt.html b/ext/prop-eq/Mcltt.Core.Syntactic.SystemOpt.html new file mode 100644 index 00000000..56f40d36 --- /dev/null +++ b/ext/prop-eq/Mcltt.Core.Syntactic.SystemOpt.html @@ -0,0 +1,493 @@ + + + + + + + + + + + + + +
+
+

Mcltt.Core.Syntactic.SystemOpt

+ +
+From Coq Require Import Setoid.
+From Mcltt Require Import LibTactics.
+From Mcltt.Core Require Import Base.
+From Mcltt.Core.Syntactic Require Export CoreTypeInversions Presup.
+Import Syntax_Notations.
+ +
+Add Parametric Morphism i Γ : (wf_exp Γ)
+    with signature wf_exp_eq Γ {{{ Type@i }}} ==> eq ==> iff as wf_exp_morphism_iff3.
+Proof with mautosolve.
+  split; intros; gen_presups...
+Qed.
+ +
+Add Parametric Morphism i Γ : (wf_exp_eq Γ)
+    with signature wf_exp_eq Γ {{{ Type@i }}} ==> eq ==> eq ==> iff as wf_exp_eq_morphism_iff3.
+Proof with mautosolve.
+  split; intros; gen_presups...
+Qed.
+ +
+Add Parametric Morphism Γ i : (wf_subtyp Γ)
+    with signature (wf_exp_eq Γ {{{Type@i}}}) ==> eq ==> iff as wf_subtyp_morphism_iff1.
+Proof.
+  split; intros; gen_presups;
+    etransitivity; mauto 4.
+Qed.
+ +
+Add Parametric Morphism Γ j : (wf_subtyp Γ)
+    with signature eq ==> (wf_exp_eq Γ {{{Type@j}}}) ==> iff as wf_subtyp_morphism_iff2.
+Proof.
+  split; intros; gen_presups;
+    etransitivity; mauto 3.
+Qed.
+ +
+#[local]
+Ltac impl_opt_constructor :=
+  intros;
+  gen_presups;
+  mautosolve 4.
+ +
+Corollary wf_subtyp_refl' : forall Γ M M' i,
+    {{ Γ M M' : Type@i }} ->
+    {{ Γ M M' }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_subtyp_refl' : mcltt.
+#[export]
+Remove Hints wf_subtyp_refl : mcltt.
+ +
+Corollary wf_conv' : forall Γ M A i A',
+    {{ Γ M : A }} ->
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ M : A' }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_conv' : mcltt.
+#[export]
+Remove Hints wf_conv : mcltt.
+ +
+Corollary wf_exp_eq_conv' : forall Γ M M' A A' i,
+   {{ Γ M M' : A }} ->
+   {{ Γ A A' : Type@i }} ->
+   {{ Γ M M' : A' }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_conv' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_conv : mcltt.
+ +
+Corollary wf_ctx_eq_extend' : forall {Γ Δ A A' i},
+    {{ Γ Δ }} ->
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ , A Δ , A' }}.
+Proof.
+  intros.
+  assert {{ Δ A A' : Type@i }} by mauto.
+  gen_presups.
+  mautosolve 4.
+Qed.
+ +
+#[export]
+Hint Resolve wf_ctx_eq_extend' : mcltt.
+#[export]
+Remove Hints wf_ctx_eq_extend : mcltt.
+ +
+Corollary wf_nat' : forall {Γ i},
+    {{ Γ }} ->
+    {{ Γ : Type@i }}.
+Proof.
+  intros.
+  assert (0 <= i) by lia.
+  mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_nat' : mcltt.
+#[export]
+Remove Hints wf_nat : mcltt.
+ +
+Corollary wf_natrec' : forall {Γ A MZ MS M},
+    {{ Γ MZ : A[Id,,zero] }} ->
+    {{ Γ , , A MS : A[WkWk,,succ(#1)] }} ->
+    {{ Γ M : }} ->
+    {{ Γ rec M return A | zero -> MZ | succ -> MS end : A[Id,,M] }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_natrec' : mcltt.
+#[export]
+Remove Hints wf_natrec : mcltt.
+ +
+Corollary wf_pi_max : forall {Γ A i B j},
+    {{ Γ A : Type@i }} ->
+    {{ Γ , A B : Type@j }} ->
+    {{ Γ Π A B : Type@(max i j) }}.
+Proof.
+  intros.
+  assert {{ Γ A : Type@(max i j) }} by mauto using lift_exp_max_left.
+  assert {{ Γ, A B : Type@(max i j) }} by mauto using lift_exp_max_right.
+  mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_pi_max : mcltt.
+ +
+Corollary wf_fn' : forall {Γ A M B},
+    {{ Γ , A M : B }} ->
+    {{ Γ λ A M : Π A B }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_fn' : mcltt.
+#[export]
+Remove Hints wf_fn : mcltt.
+ +
+Corollary wf_app' : forall {Γ M N A B},
+    {{ Γ M : Π A B }} ->
+    {{ Γ N : A }} ->
+    {{ Γ M N : B[Id,,N] }}.
+Proof.
+  intros.
+  gen_presups.
+  exvar nat ltac:(fun i => assert ({{ Γ A : Type@i }} /\ {{ Γ, A B : Type@i }}) as [] by eauto using wf_pi_inversion').
+  mautosolve 3.
+Qed.
+ +
+#[export]
+Hint Resolve wf_app' : mcltt.
+#[export]
+Remove Hints wf_app : mcltt.
+ +
+Lemma wf_exp_eq_typ_sub' : forall Γ σ Δ i j,
+    {{ Γ s σ : Δ }} ->
+    i < j ->
+    {{ Γ Type@i[σ] Type@i : Type@j }}.
+Proof. mauto 3. Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_typ_sub' : mcltt.
+ +
+#[export]
+Hint Rewrite -> wf_exp_eq_typ_sub' using solve [lia | mauto 3] : mcltt.
+ +
+Corollary wf_exp_eq_nat_sub' : forall Γ σ Δ i,
+    {{ Γ s σ : Δ }} ->
+    {{ Γ [σ] : Type@i }}.
+Proof.
+  intros.
+  assert (0 <= i) by lia.
+  mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_nat_sub' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_nat_sub : mcltt.
+ +
+#[export]
+Hint Rewrite -> wf_exp_eq_nat_sub' using mautosolve 3 : mcltt.
+ +
+Corollary wf_exp_eq_natrec_cong' : forall {Γ A A' i MZ MZ' MS MS' M M'},
+    {{ Γ , A A' : Type@i }} ->
+    {{ Γ MZ MZ' : A[Id,,zero] }} ->
+    {{ Γ , , A MS MS' : A[WkWk,,succ(#1)] }} ->
+    {{ Γ M M' : }} ->
+    {{ Γ rec M return A | zero -> MZ | succ -> MS end rec M' return A' | zero -> MZ' | succ -> MS' end : A[Id,,M] }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_natrec_cong' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_natrec_cong : mcltt.
+ +
+Corollary wf_exp_eq_natrec_sub' : forall {Γ σ Δ A MZ MS M},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ MZ : A[Id,,zero] }} ->
+    {{ Δ , , A MS : A[WkWk,,succ(#1)] }} ->
+    {{ Δ M : }} ->
+    {{ Γ rec M return A | zero -> MZ | succ -> MS end[σ] rec M[σ] return A[q σ] | zero -> MZ[σ] | succ -> MS[q (q σ)] end : A[σ,,M[σ]] }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_natrec_sub' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_natrec_sub : mcltt.
+ +
+Corollary wf_exp_eq_nat_beta_zero' : forall {Γ A MZ MS},
+    {{ Γ MZ : A[Id,,zero] }} ->
+    {{ Γ , , A MS : A[WkWk,,succ(#1)] }} ->
+    {{ Γ rec zero return A | zero -> MZ | succ -> MS end MZ : A[Id,,zero] }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_nat_beta_zero' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_nat_beta_zero : mcltt.
+ +
+Corollary wf_exp_eq_nat_beta_succ' : forall {Γ A MZ MS M},
+    {{ Γ MZ : A[Id,,zero] }} ->
+    {{ Γ , , A MS : A[WkWk,,succ(#1)] }} ->
+    {{ Γ M : }} ->
+    {{ Γ rec (succ M) return A | zero -> MZ | succ -> MS end MS[Id,,M,,rec M return A | zero -> MZ | succ -> MS end] : A[Id,,succ M] }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_nat_beta_succ' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_nat_beta_succ : mcltt.
+ +
+Corollary wf_exp_eq_pi_sub_max : forall {Γ σ Δ A i B j},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ A : Type@i }} ->
+    {{ Δ , A B : Type@j }} ->
+    {{ Γ (Π A B)[σ] Π (A[σ]) (B[q σ]) : Type@(max i j) }}.
+Proof.
+  intros.
+  assert {{ Δ A : Type@(max i j) }} by mauto using lift_exp_max_left.
+  assert {{ Δ , A B : Type@(max i j) }} by mauto using lift_exp_max_right.
+  mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_pi_sub_max : mcltt.
+ +
+Corollary wf_exp_eq_pi_cong' : forall {Γ A A' B B' i},
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ , A B B' : Type@i }} ->
+    {{ Γ Π A B Π A' B' : Type@i }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_pi_cong' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_pi_cong : mcltt.
+ +
+Corollary wf_exp_eq_pi_cong_max : forall {Γ A A' i B B' j},
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ , A B B' : Type@j }} ->
+    {{ Γ Π A B Π A' B' : Type@(max i j) }}.
+Proof.
+  intros.
+  assert {{ Γ A A' : Type@(max i j) }} by eauto using lift_exp_eq_max_left.
+  assert {{ Γ , A B B' : Type@(max i j) }} by eauto using lift_exp_eq_max_right.
+  mauto.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_pi_cong_max : mcltt.
+ +
+Corollary wf_exp_eq_fn_cong' : forall {Γ A A' i B M M'},
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ , A M M' : B }} ->
+    {{ Γ λ A M λ A' M' : Π A B }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_fn_cong' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_fn_cong : mcltt.
+ +
+Corollary wf_exp_eq_fn_sub' : forall {Γ σ Δ A M B},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ , A M : B }} ->
+    {{ Γ (λ A M)[σ] λ A[σ] M[q σ] : (Π A B)[σ] }}.
+Proof.
+  impl_opt_constructor.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_fn_sub' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_fn_sub : mcltt.
+ +
+Corollary wf_exp_eq_app_cong' : forall {Γ A B M M' N N'},
+    {{ Γ M M' : Π A B }} ->
+    {{ Γ N N' : A }} ->
+    {{ Γ M N M' N' : B[Id,,N] }}.
+Proof.
+  intros.
+  gen_presups.
+  exvar nat ltac:(fun i => assert ({{ Γ A : Type@i }} /\ {{ Γ, A B : Type@i }}) as [] by eauto using wf_pi_inversion').
+  mautosolve 3.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_app_cong' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_app_cong : mcltt.
+ +
+Corollary wf_exp_eq_app_sub' : forall {Γ σ Δ A B M N},
+    {{ Γ s σ : Δ }} ->
+    {{ Δ M : Π A B }} ->
+    {{ Δ N : A }} ->
+    {{ Γ (M N)[σ] M[σ] N[σ] : B[σ,,N[σ]] }}.
+Proof.
+  intros.
+  gen_presups.
+  exvar nat ltac:(fun i => assert ({{ Δ A : Type@i }} /\ {{ Δ, A B : Type@i }}) as [] by eauto using wf_pi_inversion').
+  mautosolve 3.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_app_sub' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_app_sub : mcltt.
+ +
+Corollary wf_exp_eq_pi_beta' : forall {Γ A B M N},
+    {{ Γ , A M : B }} ->
+    {{ Γ N : A }} ->
+    {{ Γ (λ A M) N M[Id,,N] : B[Id,,N] }}.
+Proof.
+  intros.
+  gen_presups.
+  exvar nat ltac:(fun i => assert {{ Γ A : Type@i }} by (eapply lift_exp_max_left; mauto 3)).
+  exvar nat ltac:(fun i => assert {{ Γ, A B : Type@i }} by (eapply lift_exp_max_right; mauto 3)).
+  mautosolve 3.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_pi_beta' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_pi_beta : mcltt.
+ +
+Corollary wf_exp_eq_pi_eta' : forall {Γ A B M},
+    {{ Γ M : Π A B }} ->
+    {{ Γ M λ A (M[Wk] #0) : Π A B }}.
+Proof.
+  intros.
+  gen_presups.
+  exvar nat ltac:(fun i => assert ({{ Γ A : Type@i }} /\ {{ Γ, A B : Type@i }}) as [] by eauto using wf_pi_inversion').
+  mautosolve 3.
+Qed.
+ +
+#[export]
+Hint Resolve wf_exp_eq_pi_eta' : mcltt.
+#[export]
+Remove Hints wf_exp_eq_pi_eta : mcltt.
+ +
+Lemma wf_subtyp_pi' : forall Γ A A' B B' i,
+    {{ Γ A A' : Type@i }} ->
+    {{ Γ , A' B B' }} ->
+    {{ Γ Π A B Π A' B' }}.
+Proof.
+  intros. gen_presups.
+  eapply wf_subtyp_pi with (i := max i i0);
+    mauto 3 using lift_exp_max_left, lift_exp_max_right, lift_exp_eq_max_left.
+  eapply ctxeq_exp; [ | mauto 3 using lift_exp_max_right].
+  mauto 4.
+Qed.
+ +
+#[export]
+Hint Resolve wf_subtyp_pi' : mcltt.
+#[export]
+Remove Hints wf_subtyp_pi : mcltt.
+
+
+ +
+ + + diff --git a/ext/prop-eq/Mcltt.LibTactics.html b/ext/prop-eq/Mcltt.LibTactics.html new file mode 100644 index 00000000..4e08a00d --- /dev/null +++ b/ext/prop-eq/Mcltt.LibTactics.html @@ -0,0 +1,677 @@ + + + + + + + + + + + + + +
+
+

Mcltt.LibTactics

+ +
+From Coq Require Export Equivalence Lia Morphisms Program.Equality Program.Tactics Relation_Definitions RelationClasses.
+From Equations Require Export Equations.
+ +
+Open Scope predicate_scope.
+ +
+Create HintDb mcltt discriminated.
+ +
+
+ +
+Transparency setting for generalized rewriting +
+
+#[export]
+Typeclasses Transparent arrows.
+ +
+
+ +
+

Generalization of Variables

+ +
+
+ +
+Tactic Notation "gen" ident(x) := generalize dependent x.
+Tactic Notation "gen" ident(x) ident(y) := gen x; gen y.
+Tactic Notation "gen" ident(x) ident(y) ident(z) := gen x y; gen z.
+Tactic Notation "gen" ident(x) ident(y) ident(z) ident(w) := gen x y z; gen w.
+ +
+
+ +
+

Marking-based Tactics

+ +
+
+ +
+Definition __mark__ (n : nat) A (a : A) : A := a.
+Arguments __mark__ n {A} a : simpl never.
+ +
+Ltac mark H :=
+  let t := type of H in
+  fold (__mark__ 0 t) in H.
+Ltac unmark H := unfold __mark__ in H.
+ +
+Ltac mark_all :=
+  repeat match goal with [H: ?P |- _] =>
+    try (match P with __mark__ _ _ => fail 2 end); mark H
+  end.
+Ltac unmark_all := unfold __mark__ in *.
+ +
+Ltac mark_with H n :=
+  let t := type of H in
+  fold (__mark__ n t) in H.
+Ltac mark_all_with n :=
+  repeat match goal with [H: ?P |- _] =>
+    try (match P with __mark__ _ _ => fail 2 end); mark_with H n
+  end.
+Ltac unmark_all_with n :=
+  repeat match goal with [H: ?P |- _] =>
+    match P with __mark__ ?n' _ => tryif unify n n' then unmark H else fail 1 end
+  end.
+ +
+Ltac on_all_marked_hyp tac :=
+  repeat match goal with
+    | [ H : __mark__ _ ?A |- _ ] => unmark H; tac H
+    end.
+Ltac on_all_marked_hyp_rev tac :=
+  repeat match reverse goal with
+    | [ H : __mark__ _ ?A |- _ ] => unmark H; tac H
+    end.
+Tactic Notation "on_all_marked_hyp:" tactic4(tac) := on_all_marked_hyp tac; unmark_all_with 0.
+Tactic Notation "on_all_marked_hyp_rev:" tactic4(tac) := on_all_marked_hyp_rev tac; unmark_all_with 0.
+Tactic Notation "on_all_hyp:" tactic4(tac) :=
+  mark_all_with 0; (on_all_marked_hyp: tac).
+Tactic Notation "on_all_hyp_rev:" tactic4(tac) :=
+  mark_all_with 0; (on_all_marked_hyp_rev: tac).
+ +
+
+ +
+

Simple helper

+ +
+
+ +
+Ltac destruct_logic :=
+  destruct_one_pair
+  || destruct_one_ex
+  || match goal with
+    | [ H : ?X \/ ?Y |- _ ] => destruct H
+    | [ ev : { _ } + { _ } |- _ ] => destruct ev
+    | [ ev : _ + { _ } |- _ ] => destruct ev
+    | [ ev : _ + _ |- _ ] => destruct ev
+    end.
+ +
+Ltac destruct_all := repeat destruct_logic.
+ +
+Ltac not_let_bind name :=
+  match goal with
+  | [x := _ |- _] =>
+      lazymatch name with
+      | x => fail 1
+      | _ => fail
+      end
+  | _ => idtac
+  end.
+ +
+Ltac find_dup_hyp tac non :=
+  match goal with
+  | [ H : ?X, H' : ?X |- _ ] =>
+    not_let_bind H;
+    not_let_bind H';
+    let T := type of X in
+    unify T Prop;
+    tac H H' X
+  | _ => non
+  end.
+ +
+Ltac fail_at_if_dup n :=
+  find_dup_hyp ltac:(fun H H' X => fail n "dup hypothesis" H "and" H' ":" X)
+                      ltac:(idtac).
+ +
+Ltac fail_if_dup := fail_at_if_dup ltac:(1).
+ +
+Ltac clear_dups :=
+  repeat find_dup_hyp ltac:(fun H H' _ => clear H || clear H')
+                             ltac:(idtac).
+ +
+Ltac directed tac :=
+  let ng := numgoals in
+  tac;
+  let ng' := numgoals in
+  guard ng' <= ng.
+ +
+Tactic Notation "directed" tactic2(tac) := directed tac.
+ +
+Ltac progressive_invert H :=
+  
+ +
+We use dependent destruction as it is more general than inversion +
+
+  directed dependent destruction H.
+ +
+#[local]
+Ltac progressive_invert_once H n :=
+  let T := type of H in
+  lazymatch T with
+  | __mark__ _ _ => fail
+  | forall _, _ => fail
+  | _ => idtac
+  end;
+  lazymatch type of T with
+  | Prop => idtac
+  | Type => idtac
+  end;
+  directed inversion H;
+  simplify_eqs;
+  clear_refl_eqs;
+  clear_dups;
+  try mark_with H n.
+ +
+#[global]
+Ltac progressive_inversion :=
+  clear_dups;
+  repeat match goal with
+    | H : _ |- _ =>
+        progressive_invert_once H 100
+    end;
+  unmark_all_with 100.
+ +
+Ltac clean_replace_by exp0 exp1 tac :=
+  tryif unify exp0 exp1
+  then fail
+  else
+    (let H := fresh "H" in
+     assert (exp0 = exp1) as H by ltac:(tac);
+     subst;
+     try rewrite <- H in *).
+ +
+Tactic Notation "clean" "replace" uconstr(exp0) "with" uconstr(exp1) "by" tactic3(tac) := clean_replace_by exp0 exp1 tac.
+ +
+#[global]
+Ltac find_head t :=
+  lazymatch t with
+  | ?t' _ => find_head t'
+  | _ => t
+  end.
+ +
+Ltac unify_by_head_of t head :=
+  match t with
+  | ?X _ _ _ _ _ _ _ _ _ _ => unify X head
+  | ?X _ _ _ _ _ _ _ _ _ => unify X head
+  | ?X _ _ _ _ _ _ _ _ => unify X head
+  | ?X _ _ _ _ _ _ _ => unify X head
+  | ?X _ _ _ _ _ _ => unify X head
+  | ?X _ _ _ _ _ => unify X head
+  | ?X _ _ _ _ => unify X head
+  | ?X _ _ _ => unify X head
+  | ?X _ _ => unify X head
+  | ?X _ => unify X head
+  | ?X => unify X head
+  end.
+ +
+Ltac match_by_head1 head tac :=
+  match goal with
+  | [ H : ?T |- _ ] => unify_by_head_of T head; tac H
+  end.
+Ltac match_by_head head tac := repeat (match_by_head1 head ltac:(fun H => tac H; try mark H)); unmark_all.
+ +
+Ltac inversion_by_head head := match_by_head head ltac:(fun H => inversion H).
+Ltac dir_inversion_by_head head := match_by_head head ltac:(fun H => directed inversion H).
+Ltac inversion_clear_by_head head := match_by_head head ltac:(fun H => inversion_clear H).
+Ltac dir_inversion_clear_by_head head := match_by_head head ltac:(fun H => directed inversion_clear H).
+Ltac destruct_by_head head := match_by_head head ltac:(fun H => destruct H).
+Ltac dir_destruct_by_head head := match_by_head head ltac:(fun H => directed destruct H).
+ +
+
+ +
+

McLTT automation

+ +
+
+ +
+Tactic Notation "mauto" :=
+  eauto with mcltt core.
+ +
+Tactic Notation "mauto" int_or_var(pow) :=
+  eauto pow with mcltt core.
+ +
+Tactic Notation "mauto" "using" uconstr(use) :=
+  eauto using use with mcltt core.
+ +
+Tactic Notation "mauto" "using" uconstr(use1) "," uconstr(use2) :=
+  eauto using use1, use2 with mcltt core.
+ +
+Tactic Notation "mauto" "using" uconstr(use1) "," uconstr(use2) "," uconstr(use3) :=
+  eauto using use1, use2, use3 with mcltt core.
+ +
+Tactic Notation "mauto" "using" uconstr(use1) "," uconstr(use2) "," uconstr(use3) "," uconstr(use4) :=
+  eauto using use1, use2, use3, use4 with mcltt core.
+ +
+Tactic Notation "mauto" int_or_var(pow) "using" uconstr(use) :=
+  eauto pow using use with mcltt core.
+ +
+Tactic Notation "mauto" int_or_var(pow) "using" uconstr(use1) "," uconstr(use2) :=
+  eauto pow using use1, use2 with mcltt core.
+ +
+Tactic Notation "mauto" int_or_var(pow) "using" uconstr(use1) "," uconstr(use2) "," uconstr(use3) :=
+  eauto pow using use1, use2, use3 with mcltt core.
+ +
+Tactic Notation "mauto" int_or_var(pow) "using" uconstr(use1) "," uconstr(use2) "," uconstr(use3) "," uconstr(use4) :=
+  eauto pow using use1, use2, use3, use4 with mcltt core.
+ +
+Ltac mautosolve_impl pow := unshelve solve [mauto pow]; solve [constructor].
+ +
+Tactic Notation "mautosolve" := mautosolve_impl integer:(5).
+Tactic Notation "mautosolve" int_or_var(pow) := mautosolve_impl pow.
+ +
+
+ +
+Improve type class resolution for Equivalence and PER +
+
+ +
+#[export]
+Hint Extern 1 => eassumption : typeclass_instances.
+ +
+#[export]
+Hint Extern 1 (@Reflexive _ (@predicate_equivalence _)) => simple apply @Equivalence_Reflexive : typeclass_instances.
+#[export]
+Hint Extern 1 (@Symmetric _ (@predicate_equivalence _)) => simple apply @Equivalence_Symmetric : typeclass_instances.
+#[export]
+Hint Extern 1 (@Transitive _ (@predicate_equivalence _)) => simple apply @Equivalence_Transitive : typeclass_instances.
+#[export]
+Hint Extern 1 (@Transitive _ (@predicate_implication _)) => simple apply @PreOrder_Transitive : typeclass_instances.
+ +
+
+ +
+Default setting for intuition tactic +
+
+Ltac Tauto.intuition_solver ::= auto with mcltt core solve_subterm.
+ +
+Ltac exvar T tac :=
+  lazymatch type of T with
+  | Prop =>
+      let H := fresh "H" in
+      unshelve evar (H : T);
+      [|
+        let H' := eval unfold H in H in
+          clear H; tac H']
+  | _ =>
+      let x := fresh "x" in
+      evar (x : T);
+      let x' := eval unfold x in x in
+        clear x; tac x'
+  end.
+ +
+
+ +
+this tactic traverses to the bottom of a lemma following universals and conjunctions to the bottom and apply a tactic +
+
+Ltac deepexec lem tac :=
+  let T := type of lem in
+  let T' := eval simpl in T in
+  let ST := eval unfold iff in T' in
+  match ST with
+  | _ /\ _ => deepexec constr:(proj1 lem) tac
+            || deepexec constr:(proj2 lem) tac
+  | forall _ : ?T, _ =>
+      exvar T ltac:(fun x =>
+                      lazymatch type of T with
+                      | Prop => match goal with
+                            | H : _ |- _ => unify x H; deepexec constr:(lem x) tac
+                            | _ => deepexec constr:(lem x) tac
+                            end
+                      | _ => deepexec constr:(lem x) tac
+                      end)
+  | _ => tac lem
+  end.
+ +
+
+ +
+this tactic is similar to above, but the traversal cuts off when it sees an assumption applicable to a cut-off argument C +
+
+Ltac cutexec lem C tac :=
+  let CT := type of C in
+  let T := type of lem in
+  let T' := eval simpl in T in
+  let ST := eval unfold iff in T' in
+  lazymatch ST with
+  | _ /\ _ => cutexec constr:(proj1 lem) C tac
+            || cutexec constr:(proj2 lem) C tac
+  | forall _ : ?T, _ =>
+      exvar T ltac:(fun x =>
+                      tryif unify T CT
+                      then
+                        unify x C;
+                        tac lem
+                      else
+                        lazymatch type of T with
+                         | Prop => match goal with
+                               | H : _ |- _ => unify x H; cutexec constr:(lem x) C tac
+                               | _ => cutexec constr:(lem x) C tac
+                               end
+                         | _ => cutexec constr:(lem x) C tac
+                         end)
+  | _ => tac lem
+  end.
+ +
+Ltac unify_args H P :=
+  lazymatch P with
+  | ?P' ?x =>
+      let r := unify_args H P' in
+      constr:(r x)
+  | _ => H
+  end.
+ +
+#[global]
+Ltac strong_apply H X :=
+  let H' := fresh "H" in
+  let T := type of X in
+  let R := unify_args H T in
+  cutexec R X ltac:(fun L => pose proof (L X) as H'; simpl in H'; clear X; rename H' into X).
+ +
+#[global]
+Ltac apply_equiv_left1 :=
+  let tac1 := fun H R H1 T => (let h := find_head T in unify R h; strong_apply H H1) in
+  let tac2 := fun H R G => (let h := find_head G in unify R h; apply H; simpl) in
+  match goal with
+  | H : ?R <∙> _, H1 : ?T |- _ => progress tac1 H R H1 T
+  | H : relation_equivalence ?R _, H1 : ?T |- _ => progress tac1 H R H1 T
+  | H : ?R <∙> _ |- ?G => progress tac2 H R G
+  | H : relation_equivalence ?R _ |- ?G => progress tac2 H R G
+  end.
+ +
+#[global]
+Ltac apply_equiv_left := repeat apply_equiv_left1.
+ +
+#[global]
+Ltac apply_equiv_right1 :=
+  let tac1 := fun H R H1 T => (let h := find_head T in unify R h; strong_apply H H1) in
+  let tac2 := fun H R G => (let h := find_head G in unify R h; apply H; simpl) in
+  match goal with
+  | H : _ <∙> ?R, H1 : ?T |- _ => progress tac1 H R H1 T
+  | H : relation_equivalence _ ?R, H1 : ?T |- _ => progress tac1 H R H1 T
+  | H : _ <∙> ?R |- ?G => progress tac2 H R G
+  | H : relation_equivalence _ ?R |- ?G => progress tac2 H R G
+  end.
+ +
+#[global]
+Ltac apply_equiv_right := repeat apply_equiv_right1.
+ +
+#[global]
+Ltac clear_PER :=
+  repeat match goal with
+    | H : PER _ |- _ => clear H
+    | H : Symmetric _ |- _ => clear H
+    | H : Transitive _ |- _ => clear H
+    end.
+ +
+Lemma PER_refl1 A (R : relation A) `(per : PER A R) : forall a b, R a b -> R a a.
+Proof.
+  intros.
+  etransitivity; [eassumption |].
+  symmetry. assumption.
+Qed.
+ +
+Lemma PER_refl2 A (R : relation A) `(per : PER A R) : forall a b, R a b -> R b b.
+Proof.
+  intros. symmetry in H.
+  apply PER_refl1 in H;
+    auto.
+Qed.
+ +
+#[global]
+Ltac saturate_refl :=
+  repeat match goal with
+    | H : ?R ?a ?b |- _ =>
+        tryif unify a b
+        then fail
+        else
+          directed pose proof (PER_refl1 _ _ _ _ _ H);
+        directed pose proof (PER_refl2 _ _ _ _ _ H);
+        fail_if_dup
+    end.
+ +
+#[global]
+Ltac saturate_refl_for hd :=
+  repeat match goal with
+    | H : ?R ?a ?b |- _ =>
+        unify_by_head_of R hd;
+        tryif unify a b
+        then fail
+        else
+          directed pose proof (PER_refl1 _ _ _ _ _ H);
+        directed pose proof (PER_refl2 _ _ _ _ _ H);
+        fail_if_dup
+    end.
+ +
+#[global]
+Ltac solve_refl :=
+  
+ +
+Sometimes `reflexivity` does not work as (simple) unification fails for some unknown reason. + Thus, we try Equivalence_Reflexive as well. +
+
+  solve [reflexivity || apply Equivalence_Reflexive].
+ +
+
+ +
+

Helper Instances for Generalized Rewriting

+ +
+
+#[export]
+Hint Extern 1 (subrelation (@predicate_equivalence ?Ts) _) => (let H := fresh "H" in intros ? ? H; exact H) : typeclass_instances.
+ +
+#[export]
+Hint Extern 1 (subrelation iff Basics.impl) => exact iff_impl_subrelation : typeclass_instances.
+ +
+#[export]
+Hint Extern 1 (subrelation iff (Basics.flip Basics.impl)) => exact iff_flip_impl_subrelation : typeclass_instances.
+ +
+#[export]
+Hint Extern 1 (subrelation (@relation_equivalence ?A) _) => (let H := fresh "H" in intros ? ? H; exact H) : typeclass_instances.
+ +
+#[export]
+Hint Extern 1 (subrelation (@predicate_implication ?Ts) _) => (let H := fresh "H" in intros ? ? H; exact H) : typeclass_instances.
+ +
+#[export]
+Hint Extern 1 (subrelation (@subrelation ?A) _) => (let H := fresh "H" in intros ? ? H; exact H) : typeclass_instances.
+ +
+#[export]
+Instance predicate_implication_equivalence Ts : subrelation (@predicate_equivalence Ts) (@predicate_implication Ts).
+Proof.
+  induction Ts; firstorder eauto 2.
+Qed.
+ +
+Add Parametric Morphism Ts : (@predicate_implication Ts)
+    with signature (@predicate_equivalence Ts) ==> (@predicate_equivalence Ts) ==> iff as predicate_implication_morphism.
+Proof.
+  induction Ts; split; intros; try firstorder.
+  - rewrite <- H.
+    transitivity x0; try eassumption.
+    rewrite H0; reflexivity.
+  - rewrite H.
+    transitivity y0; try eassumption.
+    rewrite <- H0; reflexivity.
+Qed.
+ +
+Add Parametric Morphism A : PER
+    with signature (@relation_equivalence A) ==> iff as PER_morphism.
+Proof.
+  split; intros []; econstructor; unfold Symmetric, Transitive in *; intuition.
+Qed.
+ +
+
+ +
+The following facility converts search of Proper from type class instances to the local context +
+
+ +
+Class PERElem (A : Type) (P : A -> Prop) (R : A -> A -> Prop) :=
+  per_elem : forall a, P a -> R a a.
+ +
+#[export]
+Instance PERProper (A : Type) (P : A -> Prop) (R : A -> A -> Prop) `(Ins : PERElem A P R) a (H : P a) :
+  Proper R a.
+Proof.
+  cbv. pose proof per_elem; auto.
+Qed.
+ +
+Ltac bulky_rewrite1 :=
+  match goal with
+  | H : _ |- _ => rewrite H
+  | _ => progress (autorewrite with mcltt)
+  end.
+ +
+Ltac bulky_rewrite := repeat (bulky_rewrite1; mauto 2).
+ +
+Ltac bulky_rewrite_in1 HT :=
+  match goal with
+  | H : _ |- _ => tryif unify H HT then fail else rewrite H in HT
+  | _ => progress (autorewrite with mcltt in HT)
+  end.
+ +
+Ltac bulky_rewrite_in HT := repeat (bulky_rewrite_in1 HT; mauto 2).
+ +
+
+ +
+This tactic provides a trivial proof for the completeness of a decision procedure. +
+
+Ltac dec_complete :=
+  lazymatch goal with
+  | |- exists _, ?L = _ =>
+      lazymatch type of L with
+      | sumbool _ _ =>
+          let Heq := fresh "Heq" in
+          destruct L eqn:Heq; eauto;
+          contradiction
+      end
+  end.
+
+
+ +
+ + + diff --git a/ext/prop-eq/coqdoc.css b/ext/prop-eq/coqdoc.css new file mode 100644 index 00000000..48096e55 --- /dev/null +++ b/ext/prop-eq/coqdoc.css @@ -0,0 +1,338 @@ +body { padding: 0px 0px; + margin: 0px 0px; + background-color: white } + +#page { display: block; + padding: 0px; + margin: 0px; + padding-bottom: 10px; } + +#header { display: block; + position: relative; + padding: 0; + margin: 0; + vertical-align: middle; + border-bottom-style: solid; + border-width: thin } + +#header h1 { padding: 0; + margin: 0;} + + +/* Contents */ + +#main{ display: block; + padding: 10px; + font-family: sans-serif; + font-size: 100%; + line-height: 100% } + +#main h1 { line-height: 95% } /* allow for multi-line headers */ + +#main a.idref:visited {color : #416DFF; text-decoration : none; } +#main a.idref:link {color : #416DFF; text-decoration : none; } +#main a.idref:hover {text-decoration : none; } +#main a.idref:active {text-decoration : none; } + +#main a.modref:visited {color : #416DFF; text-decoration : none; } +#main a.modref:link {color : #416DFF; text-decoration : none; } +#main a.modref:hover {text-decoration : none; } +#main a.modref:active {text-decoration : none; } + +#main .keyword { color : #cf1d1d } +#main { color: black } + +.section { background-color: rgb(60%,60%,100%); + padding-top: 13px; + padding-bottom: 13px; + padding-left: 3px; + margin-top: 5px; + margin-bottom: 5px; + font-size : 175% } + +h2.section { background-color: rgb(80%,80%,100%); + padding-left: 3px; + padding-top: 12px; + padding-bottom: 10px; + font-size : 130% } + +h3.section { background-color: rgb(90%,90%,100%); + padding-left: 3px; + padding-top: 7px; + padding-bottom: 7px; + font-size : 115% } + +h4.section { +/* + background-color: rgb(80%,80%,80%); + max-width: 20em; + padding-left: 5px; + padding-top: 5px; + padding-bottom: 5px; +*/ + background-color: white; + padding-left: 0px; + padding-top: 0px; + padding-bottom: 0px; + font-size : 100%; + font-weight : bold; + text-decoration : underline; + } + +#main .doc { margin: 0px; + font-family: sans-serif; + font-size: 100%; + line-height: 125%; + max-width: 40em; + color: black; + padding: 10px; + background-color: #90bdff } + +.inlinecode { + display: inline; +/* font-size: 125%; */ + color: #666666; + font-family: monospace } + +.doc .inlinecode { + display: inline; + font-size: 120%; + color: rgb(30%,30%,70%); + font-family: monospace } + +.doc .inlinecode .id { + color: rgb(30%,30%,70%); +} + +.inlinecodenm { + display: inline; + color: #444444; +} + +.doc .code { + display: inline; + font-size: 120%; + color: rgb(30%,30%,70%); + font-family: monospace } + +.comment { + display: inline; + font-family: monospace; + color: rgb(50%,50%,80%); +} + +.code { + display: block; +/* padding-left: 15px; */ + font-size: 110%; + font-family: monospace; + } + +table.infrule { + border: 0px; + margin-left: 50px; + margin-top: 10px; + margin-bottom: 10px; +} + +td.infrule { + font-family: monospace; + text-align: center; +/* color: rgb(35%,35%,70%); */ + padding: 0px; + line-height: 100%; +} + +tr.infrulemiddle hr { + margin: 1px 0 1px 0; +} + +.infrulenamecol { + color: rgb(60%,60%,60%); + font-size: 80%; + padding-left: 1em; + padding-bottom: 0.1em +} + +/* Pied de page */ + +#footer { font-size: 65%; + font-family: sans-serif; } + +/* Identifiers: ) */ + +.id { display: inline; } + +.id[title="constructor"] { + color: rgb(60%,0%,0%); +} + +.id[title="var"] { + color: rgb(40%,0%,40%); +} + +.id[title="variable"] { + color: rgb(40%,0%,40%); +} + +.id[title="definition"] { + color: rgb(0%,40%,0%); +} + +.id[title="abbreviation"] { + color: rgb(0%,40%,0%); +} + +.id[title="lemma"] { + color: rgb(0%,40%,0%); +} + +.id[title="instance"] { + color: rgb(0%,40%,0%); +} + +.id[title="projection"] { + color: rgb(0%,40%,0%); +} + +.id[title="method"] { + color: rgb(0%,40%,0%); +} + +.id[title="inductive"] { + color: rgb(0%,0%,80%); +} + +.id[title="record"] { + color: rgb(0%,0%,80%); +} + +.id[title="class"] { + color: rgb(0%,0%,80%); +} + +.id[title="keyword"] { + color : #cf1d1d; +/* color: black; */ +} + +/* Deprecated rules using the 'type' attribute of (not xhtml valid) */ + +.id[type="constructor"] { + color: rgb(60%,0%,0%); +} + +.id[type="var"] { + color: rgb(40%,0%,40%); +} + +.id[type="variable"] { + color: rgb(40%,0%,40%); +} + +.id[title="binder"] { + color: rgb(40%,0%,40%); +} + +.id[type="definition"] { + color: rgb(0%,40%,0%); +} + +.id[type="abbreviation"] { + color: rgb(0%,40%,0%); +} + +.id[type="lemma"] { + color: rgb(0%,40%,0%); +} + +.id[type="instance"] { + color: rgb(0%,40%,0%); +} + +.id[type="projection"] { + color: rgb(0%,40%,0%); +} + +.id[type="method"] { + color: rgb(0%,40%,0%); +} + +.id[type="inductive"] { + color: rgb(0%,0%,80%); +} + +.id[type="record"] { + color: rgb(0%,0%,80%); +} + +.id[type="class"] { + color: rgb(0%,0%,80%); +} + +.id[type="keyword"] { + color : #cf1d1d; +/* color: black; */ +} + +.inlinecode .id { + color: rgb(0%,0%,0%); +} + + +/* TOC */ + +#toc h2 { + padding: 10px; + background-color: rgb(60%,60%,100%); +} + +#toc li { + padding-bottom: 8px; +} + +/* 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; +} + +#index #footer { + position: absolute; + bottom: 0; +} + +.paragraph { + height: 0.75em; +} + +ul.doclist { + margin-top: 0em; + margin-bottom: 0em; +} + +.code :target { + border: 2px solid #D4D4D4; + background-color: #e5eecc; +} diff --git a/ext/prop-eq/dep.html b/ext/prop-eq/dep.html new file mode 100644 index 00000000..071d0806 --- /dev/null +++ b/ext/prop-eq/dep.html @@ -0,0 +1,305 @@ + + + + + + + + + + + + + +
+
+ + + + + + +Mcltt + +Core + + +Core + + + + +Core/Syntactic + + +Syntactic + + + + +Core/Syntactic/System + + +System + + + + + +Mcltt.Core.Syntactic.System.Definitions + + + + +Definitions + + + + + +Mcltt.Core.Syntactic.System.Lemmas + + + + +Lemmas + + + + + +Mcltt.Core.Syntactic.System.Definitions->Mcltt.Core.Syntactic.System.Lemmas + + + + + +Mcltt.Core.Syntactic.System.Tactics + + + + +Tactics + + + + + +Mcltt.Core.Syntactic.System.Lemmas->Mcltt.Core.Syntactic.System.Tactics + + + + + +Mcltt.Core.Syntactic.System + + + + +System + + + + + +Mcltt.Core.Syntactic.System.Tactics->Mcltt.Core.Syntactic.System + + + + + +Mcltt.Core.Syntactic.CoreInversions + + + + +CoreInversions + + + + + +Mcltt.Core.Syntactic.Corollaries + + + + +Corollaries + + + + + +Mcltt.Core.Syntactic.CoreInversions->Mcltt.Core.Syntactic.Corollaries + + + + + +Mcltt.Core.Syntactic.SystemOpt + + + + +SystemOpt + + + + + +Mcltt.Core.Syntactic.SystemOpt->Mcltt.Core.Syntactic.CoreInversions + + + + + +Mcltt.Core.Syntactic.CoreTypeInversions + + + + +CoreTypeInversions + + + + + +Mcltt.Core.Syntactic.CoreTypeInversions->Mcltt.Core.Syntactic.SystemOpt + + + + + +Mcltt.Core.Syntactic.System->Mcltt.Core.Syntactic.CoreTypeInversions + + + + + +Mcltt.Core.Syntactic.CtxSub + + + + +CtxSub + + + + + +Mcltt.Core.Syntactic.System->Mcltt.Core.Syntactic.CtxSub + + + + + +Mcltt.Core.Syntactic.CtxEq + + + + +CtxEq + + + + + +Mcltt.Core.Syntactic.Presup + + + + +Presup + + + + + +Mcltt.Core.Syntactic.CtxEq->Mcltt.Core.Syntactic.Presup + + + + + +Mcltt.Core.Syntactic.CtxSub->Mcltt.Core.Syntactic.CtxEq + + + + + +Mcltt.Core.Syntactic.Presup->Mcltt.Core.Syntactic.SystemOpt + + + + + +Mcltt.Core.Syntactic.Syntax + + + + +Syntax + + + + + +Mcltt.Core.Syntactic.Syntax->Mcltt.Core.Syntactic.System.Definitions + + + + + +Mcltt.Core.Base + + + + +Base + + + + + +Mcltt.Core.Base->Mcltt.Core.Syntactic.Syntax + + + + + +Mcltt.LibTactics + + + + +LibTactics + + + + + +Mcltt.LibTactics->Mcltt.Core.Syntactic.System.Definitions + + + + +
+ +
+ + + diff --git a/ext/prop-eq/images/bg_hr.png b/ext/prop-eq/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..514aee5056a320b059a4b92fc31385b01f3fd707 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz b1S7-U!)%xJ1CQbP0l+XkKg_jic literal 0 HcmV?d00001 diff --git a/ext/prop-eq/images/blacktocat.png b/ext/prop-eq/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..e160053a5bfc1f1891c5df1a04244b46132ed91c GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT literal 0 HcmV?d00001 diff --git a/ext/prop-eq/images/icon_download.png b/ext/prop-eq/images/icon_download.png new file mode 100644 index 0000000000000000000000000000000000000000..5a793f17688b22d0c98f8b32855f69daff65afaf GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|# z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w= zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn% zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4 ODubu1pUXO@geCwMBTRk( literal 0 HcmV?d00001 diff --git a/ext/prop-eq/images/sprite_download.png b/ext/prop-eq/images/sprite_download.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f8de24c1c49ce421a44ce2a24ac22d045a39fe GIT binary patch literal 14832 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 z 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 z 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

epJTwdB)BG8D5%8Me%TQ@(yBTZX z=d-Vm#_B>}gS`W!Dsq`YTMo1GGl^nPV*21yvDMh!=_k0wNvg(5Cbz&`MuEv4_Q1}Y zXAbOrxE&%Cb!Dovbdo*GM0vh=o=xwY?2fM&vfIb{xj3yck6?BoTgk7$M3G%ub^p4^ zog8|(7S5*GU>k^38)SANwVr|NDH0$Ns5-QUo`)XbFXxrtaNewO;p@=8UTisJD(xz) z{gj(uQnu;4S3@mNN3Vu@;~Bv;A=+Zh!Tk=tQWz7qXMxgMpuN^o`#I>8%3j$f-%6j! zzQ4#Qug-{xc}-<_4G`m%n@Az=!T1VtIUW}aj{p4Q|MlS_k#0B=k;n zpGpUZK!56V_$-h{zdpVBC}eDZ$`oc>cGTeLJ!G5g_Hfq0Q?ReX{8~EePXdIgAQWxy+E~l#xl8h_R`L@&jA+PeFa!ef3=Cmd zub;ImqN@UB8ig@+IHQuMV|rQGMii*Yl@^WMH$=nF&CC}^l_sr})YOO44pp2LDB?H9%6SUfeWl2jL34zOM|D= z&jx828(EF;puHZ{E6Wh)F1CRLF}%|C#|i7adfn_(DSd4d!WOdXVAft%(~|URJ|88m z>Qxy=JD*VM4*F{n26({$Zz+SH4W~(>Tk&?-Z{ceOxeH428jefHVuP0InB%m)D>xU6 zprA!CKl)lN%IeILG-<=sSSmnul7cKpL=UbE6`0+I^$xpu6x%oEUvv$gYmv_jh9hakhCfOs%r?09 zDruEFY9F!GIHcAC)NW%(Nt>D(c{a~U#FZmLe<1vD^o!{AGt3?2DC=IABE3moB@p8& zJ?+{Yua<(ghH3J1lGl;KX6MFMr%CWuF?p2dnWit*WRph zDq}-V9tr_mi;c=r+%CL4%XgoHx9t!6M2p98R@GBI=(Ce~Fg-kv)@S%EzFOkGxvz;v z0m)`lwjC}K)1rGGZz!FkjTS#_xoAzn6Wfh@G_*fl{e|0NG0?b)=RyudKg_W!%%(5= zc_Y)YxOhD2TC%8}NtX(_K3UTM$qU_Yh=Ch5GQaC`Vh7xeOAhJDb2i>Ps?K>j{p%qW z0092*ul$YwwEyl8{t)Sk9AdVzEoo{Bs)szx^z42}f)7+9s=&%A297;vKYUv7%^;w!Yv z5ldnV>(yu^-4@H8WrNm|=BHfevuZI%4kKIbiN_|T>T6pTc&|fXK#Rq|FfYNCv8ypK zoQ)Tfws(5ov^HP~-X4Yy!hggbVe^yp!GoZKw85E+{z}}p1?fVv!FDpo$L?CsGE5@>nNuuwnw!QxG|Zv z?l~ou$qeEtCG(lp7-&*BZykxm#adDIGL5?6NaEh0DSO=X@Csptv%4`*!$+gB3x+cS z+r9eYOlZkkTE7#0h%-dD~53j8$0mW5&T4tI=P^79~6w zS$qd_Fii_?6&FpEkj-eH@bxhsAM`$WPQiuDl_iU`i9DOfV2jh6)9movT3vsIXp7ep z%#D>oyKXFB_!uk=v_U+@fH_t{!M2>0HDR!AoU!Q38F>o))eo@~KdZ3XW@s#A8;=MP z%4MCFH~kS%WwlAZgVPV>p>Y+KnT~cNR+8sDp>2^~_Fn)C`W-TIL+KT%0DbZ%%K80DlCRM!Re6 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%0DN+-C9_EkW9`iH|`lhVJeNlmT+g!G2ZpZlN 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/ext/prop-eq/index.html b/ext/prop-eq/index.html new file mode 100644 index 00000000..708acf16 --- /dev/null +++ b/ext/prop-eq/index.html @@ -0,0 +1,146 @@ + + + + + + + McLTT: A Bottom-up Approach to Implementing A Proof +Assistant + + + + + + + + + + +

McLTT: +A Bottom-up Approach to Implementing A Proof Assistant

+

In McLTT, we build a verified, runnable typechecker for Martin-Löf +type theory. After the accomplishment of this project, we will obtain an +executable, to which we can feed a program in Martin-Löf type theory, +and this executable will check whether this program has the specified +type. McLTT is novel in that it is implemented in Coq. Moreover, we will +prove that the typechecking algorithm extracted from Coq is sound and +complete: a program passes typechecking if and only if it is a +well-typed program in MLTT. This will be the first verified proof +assistant (despite being elementary) and serves as a basis for future +extensions.

+

Online Documentation

+

We have generated a Coqdoc for +browsing our Coq proof.

+

Architecture

+

McLTT has the following architecture:

+
    | source code of McLTT
+    v
++-------+
+| lexer |          OCaml code generated by ocamllex
++-------+
+    | stream of tokens
+    v
++--------+
+| parser |         Coq code generated by Menhir
++--------+
+    | concrete syntax tree
+    v
++------------+
+| elaborator |     Coq code
++------------+
+    | abstract syntax tree
+    v
++-------------+
+| typechecker |    Coq code
+| (normalizer |
+|   included) |
++-------------+
+    | yes or no    Driver in OCaml
+    v
+

In this architecture, most code is in Coq, with accompanying theorems +to justify the implementation.

+

Dependencies

+ +

We recommend to install dependencies in the following way:

+
opam switch create coq-8.20.0 4.14.2
+opam install menhir
+opam pin add coq 8.20.0
+opam repo add coq-released https://coq.inria.fr/opam/released
+opam install coq-equations
+opam install coq-menhirlib
+opam install ppx_inline_test
+

Development

+

Use the toplevel make to build the whole project:

+
make
+

Makefile will try to find out the number of your CPU cores and +parallel as much as possible.

+

Once make finishes, you can run the binary:

+
dune exec mcltt examples/nary.mcl # or your own example
+

or more directly

+
_build/default/driver/mcltt.exe examples/nary.mcl # or your own example
+

To build Coq proof only, you can go into and only build the Coq +folder:

+
cd theories
+make
+

Branches

+

The Github repo includes the following special branches:

+
    +
  1. main: the main branch that is used to generate this +homepage and Coqdoc;
  2. +
  3. ext/*: branches in this pattern are variations of +main that implements various extensions. They are often +used to implement extensions that require non-trivial workload and are +aimed to be merged to main eventually;
  4. +
  5. gh-pages: the branch to host the homepage.
  6. +
+ + diff --git a/ext/prop-eq/indexpage.html b/ext/prop-eq/indexpage.html new file mode 100644 index 00000000..dc77d284 --- /dev/null +++ b/ext/prop-eq/indexpage.html @@ -0,0 +1,1853 @@ + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Global IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(478 entries)
Notation IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(51 entries)
Module IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(3 entries)
Library IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(14 entries)
Lemma IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(204 entries)
Constructor IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(121 entries)
Projection IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Inductive IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(15 entries)
Instance IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(10 entries)
Abbreviation IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(2 entries)
Record IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Definition IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(56 entries)
+
+

Global Index

+

A

+app_ctx_vlookup [lemma, in Mcltt.Core.Syntactic.Corollaries]
+app_ctx_lookup [lemma, in Mcltt.Core.Syntactic.Corollaries]
+a_extend [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_compose [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_weaken [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_id [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_sub [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_var [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_eqrec [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_refl [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_eq [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_app [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_fn [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_pi [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_natrec [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_succ [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_zero [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_nat [constructor, in Mcltt.Core.Syntactic.Syntax]
+a_typ [constructor, in Mcltt.Core.Syntactic.Syntax]
+

B

+Base [library]
+

C

+CoreInversions [library]
+CoreTypeInversions [library]
+Corollaries [library]
+Cst [module, in Mcltt.Core.Syntactic.Syntax]
+Cst.app [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.eqrec [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.fn [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.nat [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.natrec [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.obj [inductive, in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_sind [definition, in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_rec [definition, in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_ind [definition, in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_rect [definition, in Mcltt.Core.Syntactic.Syntax]
+Cst.pi [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.prop_eq [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.refl [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.succ [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.typ [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.var [constructor, in Mcltt.Core.Syntactic.Syntax]
+Cst.zero [constructor, in Mcltt.Core.Syntactic.Syntax]
+ctx [abbreviation, in Mcltt.Core.Syntactic.Syntax]
+CtxEq [library]
+ctxeq_ctx_lookup [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+ctxeq_subtyp [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_sub_eq [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_sub [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_exp_eq [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_exp [lemma, in Mcltt.Core.Syntactic.CtxEq]
+CtxSub [library]
+ctxsub_judg.ctxsub_subtyp [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub_eq [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp_eq [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_subtyp_helper [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub_eq_helper [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub_helper [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp_eq_helper [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp_helper [lemma, in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg [module, in Mcltt.Core.Syntactic.CtxSub]
+ctx_sub_ctx_lookup [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_decomp_right [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_decomp_left [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_decomp [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_lookup_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+ctx_lookup_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+ctx_lookup [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+ctx_eq_trans [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctx_eq_sym [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctx_eq_refl [lemma, in Mcltt.Core.Syntactic.CtxEq]
+ctx_lookup_functional [lemma, in Mcltt.Core.Syntactic.Corollaries]
+ctx_sub_refl [lemma, in Mcltt.Core.Syntactic.CtxSub]
+

D

+Definitions [library]
+

E

+exp [inductive, in Mcltt.Core.Syntactic.Syntax]
+exp_eq_var_1_sub_q_sigma [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_1_sub_q_sigma_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_sub_compose_cong [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_sub_compose_cong_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_weaken_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_1_sub_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_sub_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_nat_helper [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_nat_sub_sub_to_nat_sub [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_nat_sub_sub [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_compose_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_nat2 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_nat1 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_sub_compose_cong_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_weaken_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_1_sub_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_sub_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_typ_helper [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_typ_sub_sub [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_compose_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_typ2' [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_typ1 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_trans_typ_max [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_refl [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+exp_to_num [definition, in Mcltt.Core.Syntactic.Syntax]
+exp_to_nat [definition, in Mcltt.Core.Syntactic.Syntax]
+exp_sind [definition, in Mcltt.Core.Syntactic.Syntax]
+exp_rec [definition, in Mcltt.Core.Syntactic.Syntax]
+exp_ind [definition, in Mcltt.Core.Syntactic.Syntax]
+exp_rect [definition, in Mcltt.Core.Syntactic.Syntax]
+exp_eq_typ_q_sigma_then_weak_weak_extend_succ_var_1 [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_sub_decompose_double_q_with_id_double_extend [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_var_sub_rhs_typ_gen [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_pi_eta_rhs_body [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_pi_sub_rhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_pi_sub_lhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_nat_beta_succ_rhs_typ_gen [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_sub_cong_typ2 [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_elim_sub_rhs_typ [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_elim_sub_lhs_typ_gen [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_natrec_cong_rhs_typ [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_succ_sub_rhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_succ_sub_lhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_zero_sub_lhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_nat_sub_lhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+exp_typ_sub_lhs [lemma, in Mcltt.Core.Syntactic.Corollaries]
+

F

+functional_ctx_lookup [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+

H

+here [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+

I

+id_sub_lookup_var1 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+id_sub_lookup_var0 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+invert_compose_id [lemma, in Mcltt.Core.Syntactic.Corollaries]
+invert_sub_id_typ [lemma, in Mcltt.Core.Syntactic.Corollaries]
+invert_sub_id [lemma, in Mcltt.Core.Syntactic.Corollaries]
+

L

+Lemmas [library]
+LibTactics [library]
+lift_exp_eq_max_right [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_eq_max_left [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_eq_ge [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_max_right [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_max_left [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_ge [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+

N

+nat_to_exp [definition, in Mcltt.Core.Syntactic.Syntax]
+ne [inductive, in Mcltt.Core.Syntactic.Syntax]
+ne_eq_dec [lemma, in Mcltt.Core.Syntactic.Syntax]
+ne_to_exp [definition, in Mcltt.Core.Syntactic.Syntax]
+ne_sind [definition, in Mcltt.Core.Syntactic.Syntax]
+ne_rec [definition, in Mcltt.Core.Syntactic.Syntax]
+ne_ind [definition, in Mcltt.Core.Syntactic.Syntax]
+ne_rect [definition, in Mcltt.Core.Syntactic.Syntax]
+ne_eqrec [constructor, in Mcltt.Core.Syntactic.Syntax]
+ne_var [constructor, in Mcltt.Core.Syntactic.Syntax]
+ne_app [constructor, in Mcltt.Core.Syntactic.Syntax]
+ne_natrec [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf [inductive, in Mcltt.Core.Syntactic.Syntax]
+nf_eq_dec [lemma, in Mcltt.Core.Syntactic.Syntax]
+nf_to_exp [definition, in Mcltt.Core.Syntactic.Syntax]
+nf_sind [definition, in Mcltt.Core.Syntactic.Syntax]
+nf_rec [definition, in Mcltt.Core.Syntactic.Syntax]
+nf_ind [definition, in Mcltt.Core.Syntactic.Syntax]
+nf_rect [definition, in Mcltt.Core.Syntactic.Syntax]
+nf_neut [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_refl [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_eq [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_fn [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_pi [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_succ [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_zero [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_nat [constructor, in Mcltt.Core.Syntactic.Syntax]
+nf_typ [constructor, in Mcltt.Core.Syntactic.Syntax]
+num_to_exp [definition, in Mcltt.Core.Syntactic.Syntax]
+

P

+PERElem [record, in Mcltt.LibTactics]
+PERElem [inductive, in Mcltt.LibTactics]
+PERProper [instance, in Mcltt.LibTactics]
+per_elem [projection, in Mcltt.LibTactics]
+per_elem [constructor, in Mcltt.LibTactics]
+PER_refl2 [lemma, in Mcltt.LibTactics]
+PER_refl1 [lemma, in Mcltt.LibTactics]
+predicate_implication_equivalence [instance, in Mcltt.LibTactics]
+Presup [library]
+presup_exp [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_exp_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_lookup_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_exp_eq_ctx [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_eq_ctx_right [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_eq_ctx_left [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_eq_ctx [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_exp_ctx [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_right [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_left [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_eq_right [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_eq_left [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_eq [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+presup_subtyp_right [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+presup_ctx_sub_right [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+presup_ctx_sub_left [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+presup_ctx_sub [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+presup_subtyp [lemma, in Mcltt.Core.Syntactic.Presup]
+presup_sub_eq [lemma, in Mcltt.Core.Syntactic.Presup]
+presup_exp_eq [lemma, in Mcltt.Core.Syntactic.Presup]
+

Q

+q [definition, in Mcltt.Core.Syntactic.Syntax]
+

S

+sub [inductive, in Mcltt.Core.Syntactic.Syntax]
+sub_lookup_var1 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_lookup_var0 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_q_sigma_compose_weak_weak_extend_succ_var_1 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_p_q_q_sigma_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_q_sigma_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_q_sigma [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_q_sigma_id_extend [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_sigma_compose_weak_id_extend [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_id_extend_compose_sigma [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_id_extend_nat_compose_sigma [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_weak_compose_weak_extend_succ_var_1 [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_id_extend_zero [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_q_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_q_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_q [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_id_extend [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_id_extend [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_id_on_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_extend_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_compose_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_cong_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_extend_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_wk_var0_id [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_extend_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_compose_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_cong_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_extend_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_refl [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+sub_sind [definition, in Mcltt.Core.Syntactic.Syntax]
+sub_rec [definition, in Mcltt.Core.Syntactic.Syntax]
+sub_ind [definition, in Mcltt.Core.Syntactic.Syntax]
+sub_rect [definition, in Mcltt.Core.Syntactic.Syntax]
+sub_eq_q_compose_nat [lemma, in Mcltt.Core.Syntactic.Corollaries]
+sub_eq_q_compose [lemma, in Mcltt.Core.Syntactic.Corollaries]
+sub_eq_p_q_sigma_compose_tau_extend [lemma, in Mcltt.Core.Syntactic.Corollaries]
+sub_decompose_q_typ [lemma, in Mcltt.Core.Syntactic.Corollaries]
+sub_decompose_q [lemma, in Mcltt.Core.Syntactic.Corollaries]
+sub_q_eq [lemma, in Mcltt.Core.Syntactic.Corollaries]
+sub_id_typ [lemma, in Mcltt.Core.Syntactic.Corollaries]
+Syntax [library]
+nf:eqrec _ as Eq _ _ _ return _ | refl -> _ end (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:refl _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:Eq _ _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:⇑ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:# _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:rec _ return _ | zero -> _ | succ -> _ end (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:succ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:zero (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:Π _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:Type @ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:ℕ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:_ _ .. _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:λ _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:_ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:~ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+nf:( _ ) (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+n{{{ _ }}} (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:_ , _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:⋅ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:q _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:_ ,, _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:_ ∘ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:Wk (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:Id (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:# _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:eqrec _ as Eq _ _ _ return _ | refl -> _ end (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:refl _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:Eq _ _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:rec _ return _ | zero -> _ | succ -> _ end (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:succ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:zero (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:Π _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:Type @ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:ℕ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:_ _ .. _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:λ _ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:_ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:~ _ (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:( _ ) (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+exp:_ [ _ ] (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+{{{ _ }}} (mcltt_scope) [notation, in Mcltt.Core.Syntactic.Syntax]
+Syntax_Notations [module, in Mcltt.Core.Syntactic.Syntax]
+System [library]
+SystemOpt [library]
+

T

+Tactics [library]
+there [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+typ [abbreviation, in Mcltt.Core.Syntactic.Syntax]
+

V

+vlookup_1_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+vlookup_0_nat [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+vlookup_1_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+vlookup_0_typ [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+

W

+wf_pi_inversion' [lemma, in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_pi_inversion [lemma, in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_nat_inversion [lemma, in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_typ_inversion [lemma, in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_sub_extend_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_sub_compose_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_sub_weaken_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_sub_id_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_exp_sub_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_vlookup_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_app_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_fn_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_natrec_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_succ_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_zero_inversion [lemma, in Mcltt.Core.Syntactic.CoreInversions]
+wf_subtyp_univ_weaken [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_subtyp_sub [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_subtyp_ge [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_subtyp_refl [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_sub_eq_conv [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_exp_eq_conv [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_sub_conv [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_conv [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_ctx_sub_refl [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_exp_eq_cumu [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_cumu [lemma, in Mcltt.Core.Syntactic.System.Lemmas]
+wf_sub_eq_per_elem [instance, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_per_elem [instance, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_subtyp' [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_subtyp' [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_subtyp' [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_subtyp' [lemma, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_Transitive [instance, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_Symmetric [instance, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_PER [instance, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_PER [instance, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_extend [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_empty [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_mut_ind' [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_mut_ind' [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_mut_ind' [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_mut_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_ind [definition, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_pi [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_univ [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_trans [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_refl [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_subtyp [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_trans [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_sym [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_extend [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_p_extend [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_extend_compose [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_compose_assoc [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_id_compose_left [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_id_compose_right [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_extend_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_compose_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_weaken [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_id [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_trans [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sym [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_subtyp [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sub_compose [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sub_id [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sub_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var_weaken [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var_S_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var_0_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eqrec_beta [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eqrec_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_refl_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eq_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eqrec_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_refl_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eq_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_eta [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_beta [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_app_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_app_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_fn_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_fn_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_nat_beta_succ [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_nat_beta_zero [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_natrec_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_natrec_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_succ_cong [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_succ_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_zero_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_nat_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_typ_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_subtyp [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_extend [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_compose [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_weaken [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_id [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_subtyp [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_sub [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_eqrec [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_refl [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_eq [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_vlookup [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_app [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_fn [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_pi [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_natrec [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_succ [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_zero [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_nat [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_typ [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_extend [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_empty [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_extend [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_empty [constructor, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx [inductive, in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_PER [instance, in Mcltt.Core.Syntactic.CtxEq]
+wf_subtyp_subst [lemma, in Mcltt.Core.Syntactic.Corollaries]
+wf_subtyp_subst_eq [lemma, in Mcltt.Core.Syntactic.Corollaries]
+wf_ctx_sub_length [lemma, in Mcltt.Core.Syntactic.Corollaries]
+wf_subtyp_pi' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_eta' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_beta' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_app_sub' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_app_cong' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_fn_sub' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_fn_cong' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_cong_max [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_cong' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_sub_max [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_nat_beta_succ' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_nat_beta_zero' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_natrec_sub' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_natrec_cong' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_nat_sub' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_typ_sub' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_app' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_fn' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_pi_max [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_natrec' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_nat' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_ctx_eq_extend' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_conv' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_conv' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_subtyp_refl' [lemma, in Mcltt.Core.Syntactic.SystemOpt]
+wf_ctx_sub_trans_ins [instance, in Mcltt.Core.Syntactic.CtxSub]
+wf_ctx_sub_trans [lemma, in Mcltt.Core.Syntactic.CtxSub]
+

_

+__mark__ [definition, in Mcltt.LibTactics]
+

other

+judg:⊢ _ ≈ _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢ _ ⊆ _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢s _ ≈ _ : _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢ _ ≈ _ : _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢s _ : _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢ _ : _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:⊢ _ ⊆ _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:⊢ _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+judg:# _ : _ ∈ _ (type_scope) [notation, in Mcltt.Core.Syntactic.System.Definitions]
+{{ _ }} [notation, in Mcltt.Core.Base]
+


+

Notation Index

+

S

+nf:eqrec _ as Eq _ _ _ return _ | refl -> _ end (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:refl _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:Eq _ _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:⇑ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:# _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:rec _ return _ | zero -> _ | succ -> _ end (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:succ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:zero (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:Π _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:Type @ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:ℕ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:_ _ .. _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:λ _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:_ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:~ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+nf:( _ ) (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+n{{{ _ }}} (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:_ , _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:⋅ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:q _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:_ ,, _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:_ ∘ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:Wk (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:Id (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:# _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:eqrec _ as Eq _ _ _ return _ | refl -> _ end (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:refl _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:Eq _ _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:rec _ return _ | zero -> _ | succ -> _ end (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:succ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:zero (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:Π _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:Type @ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:ℕ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:_ _ .. _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:λ _ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:_ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:~ _ (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:( _ ) (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+exp:_ [ _ ] (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+{{{ _ }}} (mcltt_scope) [in Mcltt.Core.Syntactic.Syntax]
+

other

+judg:⊢ _ ≈ _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢ _ ⊆ _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢s _ ≈ _ : _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢ _ ≈ _ : _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢s _ : _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:_ ⊢ _ : _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:⊢ _ ⊆ _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:⊢ _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+judg:# _ : _ ∈ _ (type_scope) [in Mcltt.Core.Syntactic.System.Definitions]
+{{ _ }} [in Mcltt.Core.Base]
+


+

Module Index

+

C

+Cst [in Mcltt.Core.Syntactic.Syntax]
+ctxsub_judg [in Mcltt.Core.Syntactic.CtxSub]
+

S

+Syntax_Notations [in Mcltt.Core.Syntactic.Syntax]
+


+

Library Index

+

B

+Base
+

C

+CoreInversions
+CoreTypeInversions
+Corollaries
+CtxEq
+CtxSub
+

D

+Definitions
+

L

+Lemmas
+LibTactics
+

P

+Presup
+

S

+Syntax
+System
+SystemOpt
+

T

+Tactics
+


+

Lemma Index

+

A

+app_ctx_vlookup [in Mcltt.Core.Syntactic.Corollaries]
+app_ctx_lookup [in Mcltt.Core.Syntactic.Corollaries]
+

C

+ctxeq_ctx_lookup [in Mcltt.Core.Syntactic.System.Lemmas]
+ctxeq_subtyp [in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_sub_eq [in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_sub [in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_exp_eq [in Mcltt.Core.Syntactic.CtxEq]
+ctxeq_exp [in Mcltt.Core.Syntactic.CtxEq]
+ctxsub_judg.ctxsub_subtyp [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub_eq [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp_eq [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_subtyp_helper [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub_eq_helper [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_sub_helper [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp_eq_helper [in Mcltt.Core.Syntactic.CtxSub]
+ctxsub_judg.ctxsub_exp_helper [in Mcltt.Core.Syntactic.CtxSub]
+ctx_sub_ctx_lookup [in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_decomp_right [in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_decomp_left [in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_decomp [in Mcltt.Core.Syntactic.System.Lemmas]
+ctx_eq_trans [in Mcltt.Core.Syntactic.CtxEq]
+ctx_eq_sym [in Mcltt.Core.Syntactic.CtxEq]
+ctx_eq_refl [in Mcltt.Core.Syntactic.CtxEq]
+ctx_lookup_functional [in Mcltt.Core.Syntactic.Corollaries]
+ctx_sub_refl [in Mcltt.Core.Syntactic.CtxSub]
+

E

+exp_eq_var_1_sub_q_sigma [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_1_sub_q_sigma_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_sub_compose_cong [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_sub_compose_cong_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_weaken_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_1_sub_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_sub_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_nat_helper [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_nat_sub_sub_to_nat_sub [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_nat_sub_sub [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_compose_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_nat2 [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_nat1 [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_sub_compose_cong_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_weaken_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_1_sub_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_var_0_sub_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_typ_helper [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_typ_sub_sub [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_compose_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_typ2' [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_sub_cong_typ1 [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_sub_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_trans_typ_max [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_refl [in Mcltt.Core.Syntactic.System.Lemmas]
+exp_eq_typ_q_sigma_then_weak_weak_extend_succ_var_1 [in Mcltt.Core.Syntactic.Corollaries]
+exp_sub_decompose_double_q_with_id_double_extend [in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_var_sub_rhs_typ_gen [in Mcltt.Core.Syntactic.Corollaries]
+exp_pi_eta_rhs_body [in Mcltt.Core.Syntactic.Corollaries]
+exp_pi_sub_rhs [in Mcltt.Core.Syntactic.Corollaries]
+exp_pi_sub_lhs [in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_nat_beta_succ_rhs_typ_gen [in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_sub_cong_typ2 [in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_elim_sub_rhs_typ [in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_elim_sub_lhs_typ_gen [in Mcltt.Core.Syntactic.Corollaries]
+exp_eq_natrec_cong_rhs_typ [in Mcltt.Core.Syntactic.Corollaries]
+exp_succ_sub_rhs [in Mcltt.Core.Syntactic.Corollaries]
+exp_succ_sub_lhs [in Mcltt.Core.Syntactic.Corollaries]
+exp_zero_sub_lhs [in Mcltt.Core.Syntactic.Corollaries]
+exp_nat_sub_lhs [in Mcltt.Core.Syntactic.Corollaries]
+exp_typ_sub_lhs [in Mcltt.Core.Syntactic.Corollaries]
+

F

+functional_ctx_lookup [in Mcltt.Core.Syntactic.System.Lemmas]
+

I

+id_sub_lookup_var1 [in Mcltt.Core.Syntactic.System.Lemmas]
+id_sub_lookup_var0 [in Mcltt.Core.Syntactic.System.Lemmas]
+invert_compose_id [in Mcltt.Core.Syntactic.Corollaries]
+invert_sub_id_typ [in Mcltt.Core.Syntactic.Corollaries]
+invert_sub_id [in Mcltt.Core.Syntactic.Corollaries]
+

L

+lift_exp_eq_max_right [in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_eq_max_left [in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_eq_ge [in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_max_right [in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_max_left [in Mcltt.Core.Syntactic.System.Lemmas]
+lift_exp_ge [in Mcltt.Core.Syntactic.System.Lemmas]
+

N

+ne_eq_dec [in Mcltt.Core.Syntactic.Syntax]
+nf_eq_dec [in Mcltt.Core.Syntactic.Syntax]
+

P

+PER_refl2 [in Mcltt.LibTactics]
+PER_refl1 [in Mcltt.LibTactics]
+presup_exp [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_exp_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_lookup_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_exp_eq_ctx [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_eq_ctx_right [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_eq_ctx_left [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_eq_ctx [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_exp_ctx [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_right [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub_left [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_sub [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_eq_right [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_eq_left [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_ctx_eq [in Mcltt.Core.Syntactic.System.Lemmas]
+presup_subtyp_right [in Mcltt.Core.Syntactic.System.Definitions]
+presup_ctx_sub_right [in Mcltt.Core.Syntactic.System.Definitions]
+presup_ctx_sub_left [in Mcltt.Core.Syntactic.System.Definitions]
+presup_ctx_sub [in Mcltt.Core.Syntactic.System.Definitions]
+presup_subtyp [in Mcltt.Core.Syntactic.Presup]
+presup_sub_eq [in Mcltt.Core.Syntactic.Presup]
+presup_exp_eq [in Mcltt.Core.Syntactic.Presup]
+

S

+sub_lookup_var1 [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_lookup_var0 [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_q_sigma_compose_weak_weak_extend_succ_var_1 [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_p_q_q_sigma_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_q_sigma_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_q_sigma [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_q_sigma_id_extend [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_sigma_compose_weak_id_extend [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_id_extend_compose_sigma [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_id_extend_nat_compose_sigma [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_weak_compose_weak_extend_succ_var_1 [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_id_extend_zero [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_q_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_q_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_q [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_id_extend [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_id_extend [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_id_on_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_extend_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_compose_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_cong_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_extend_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_wk_var0_id [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_p_extend_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_compose_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_extend_cong_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_extend_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_refl [in Mcltt.Core.Syntactic.System.Lemmas]
+sub_eq_q_compose_nat [in Mcltt.Core.Syntactic.Corollaries]
+sub_eq_q_compose [in Mcltt.Core.Syntactic.Corollaries]
+sub_eq_p_q_sigma_compose_tau_extend [in Mcltt.Core.Syntactic.Corollaries]
+sub_decompose_q_typ [in Mcltt.Core.Syntactic.Corollaries]
+sub_decompose_q [in Mcltt.Core.Syntactic.Corollaries]
+sub_q_eq [in Mcltt.Core.Syntactic.Corollaries]
+sub_id_typ [in Mcltt.Core.Syntactic.Corollaries]
+

V

+vlookup_1_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+vlookup_0_nat [in Mcltt.Core.Syntactic.System.Lemmas]
+vlookup_1_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+vlookup_0_typ [in Mcltt.Core.Syntactic.System.Lemmas]
+

W

+wf_pi_inversion' [in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_pi_inversion [in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_nat_inversion [in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_typ_inversion [in Mcltt.Core.Syntactic.CoreTypeInversions]
+wf_sub_extend_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_sub_compose_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_sub_weaken_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_sub_id_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_exp_sub_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_vlookup_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_app_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_fn_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_natrec_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_succ_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_zero_inversion [in Mcltt.Core.Syntactic.CoreInversions]
+wf_subtyp_univ_weaken [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_subtyp_sub [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_subtyp_ge [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_subtyp_refl [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_sub_eq_conv [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_exp_eq_conv [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_sub_conv [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_conv [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_ctx_sub_refl [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_exp_eq_cumu [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_cumu [in Mcltt.Core.Syntactic.System.Lemmas]
+wf_sub_eq_subtyp' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_subtyp' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_subtyp' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_subtyp' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_subst [in Mcltt.Core.Syntactic.Corollaries]
+wf_subtyp_subst_eq [in Mcltt.Core.Syntactic.Corollaries]
+wf_ctx_sub_length [in Mcltt.Core.Syntactic.Corollaries]
+wf_subtyp_pi' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_eta' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_beta' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_app_sub' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_app_cong' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_fn_sub' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_fn_cong' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_cong_max [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_cong' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_pi_sub_max [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_nat_beta_succ' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_nat_beta_zero' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_natrec_sub' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_natrec_cong' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_nat_sub' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_typ_sub' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_app' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_fn' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_pi_max [in Mcltt.Core.Syntactic.SystemOpt]
+wf_natrec' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_nat' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_ctx_eq_extend' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_exp_eq_conv' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_conv' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_subtyp_refl' [in Mcltt.Core.Syntactic.SystemOpt]
+wf_ctx_sub_trans [in Mcltt.Core.Syntactic.CtxSub]
+


+

Constructor Index

+

A

+a_extend [in Mcltt.Core.Syntactic.Syntax]
+a_compose [in Mcltt.Core.Syntactic.Syntax]
+a_weaken [in Mcltt.Core.Syntactic.Syntax]
+a_id [in Mcltt.Core.Syntactic.Syntax]
+a_sub [in Mcltt.Core.Syntactic.Syntax]
+a_var [in Mcltt.Core.Syntactic.Syntax]
+a_eqrec [in Mcltt.Core.Syntactic.Syntax]
+a_refl [in Mcltt.Core.Syntactic.Syntax]
+a_eq [in Mcltt.Core.Syntactic.Syntax]
+a_app [in Mcltt.Core.Syntactic.Syntax]
+a_fn [in Mcltt.Core.Syntactic.Syntax]
+a_pi [in Mcltt.Core.Syntactic.Syntax]
+a_natrec [in Mcltt.Core.Syntactic.Syntax]
+a_succ [in Mcltt.Core.Syntactic.Syntax]
+a_zero [in Mcltt.Core.Syntactic.Syntax]
+a_nat [in Mcltt.Core.Syntactic.Syntax]
+a_typ [in Mcltt.Core.Syntactic.Syntax]
+

C

+Cst.app [in Mcltt.Core.Syntactic.Syntax]
+Cst.eqrec [in Mcltt.Core.Syntactic.Syntax]
+Cst.fn [in Mcltt.Core.Syntactic.Syntax]
+Cst.nat [in Mcltt.Core.Syntactic.Syntax]
+Cst.natrec [in Mcltt.Core.Syntactic.Syntax]
+Cst.pi [in Mcltt.Core.Syntactic.Syntax]
+Cst.prop_eq [in Mcltt.Core.Syntactic.Syntax]
+Cst.refl [in Mcltt.Core.Syntactic.Syntax]
+Cst.succ [in Mcltt.Core.Syntactic.Syntax]
+Cst.typ [in Mcltt.Core.Syntactic.Syntax]
+Cst.var [in Mcltt.Core.Syntactic.Syntax]
+Cst.zero [in Mcltt.Core.Syntactic.Syntax]
+

H

+here [in Mcltt.Core.Syntactic.System.Definitions]
+

N

+ne_eqrec [in Mcltt.Core.Syntactic.Syntax]
+ne_var [in Mcltt.Core.Syntactic.Syntax]
+ne_app [in Mcltt.Core.Syntactic.Syntax]
+ne_natrec [in Mcltt.Core.Syntactic.Syntax]
+nf_neut [in Mcltt.Core.Syntactic.Syntax]
+nf_refl [in Mcltt.Core.Syntactic.Syntax]
+nf_eq [in Mcltt.Core.Syntactic.Syntax]
+nf_fn [in Mcltt.Core.Syntactic.Syntax]
+nf_pi [in Mcltt.Core.Syntactic.Syntax]
+nf_succ [in Mcltt.Core.Syntactic.Syntax]
+nf_zero [in Mcltt.Core.Syntactic.Syntax]
+nf_nat [in Mcltt.Core.Syntactic.Syntax]
+nf_typ [in Mcltt.Core.Syntactic.Syntax]
+

P

+per_elem [in Mcltt.LibTactics]
+

T

+there [in Mcltt.Core.Syntactic.System.Definitions]
+

W

+wf_ctx_eq_extend [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_empty [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_pi [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_univ [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_trans [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_refl [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_subtyp [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_trans [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_sym [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_extend [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_p_extend [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_extend_compose [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_compose_assoc [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_id_compose_left [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_id_compose_right [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_extend_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_compose_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_weaken [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_id [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_trans [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sym [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_subtyp [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sub_compose [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sub_id [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sub_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var_weaken [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var_S_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var_0_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_var [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eqrec_beta [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eqrec_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_refl_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eq_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eqrec_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_refl_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_eq_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_eta [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_beta [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_app_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_app_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_fn_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_fn_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_pi_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_nat_beta_succ [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_nat_beta_zero [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_natrec_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_natrec_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_succ_cong [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_succ_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_zero_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_nat_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_typ_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_subtyp [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_extend [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_compose [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_weaken [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_id [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_subtyp [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_eqrec [in Mcltt.Core.Syntactic.System.Definitions]
+wf_refl [in Mcltt.Core.Syntactic.System.Definitions]
+wf_eq [in Mcltt.Core.Syntactic.System.Definitions]
+wf_vlookup [in Mcltt.Core.Syntactic.System.Definitions]
+wf_app [in Mcltt.Core.Syntactic.System.Definitions]
+wf_fn [in Mcltt.Core.Syntactic.System.Definitions]
+wf_pi [in Mcltt.Core.Syntactic.System.Definitions]
+wf_natrec [in Mcltt.Core.Syntactic.System.Definitions]
+wf_succ [in Mcltt.Core.Syntactic.System.Definitions]
+wf_zero [in Mcltt.Core.Syntactic.System.Definitions]
+wf_nat [in Mcltt.Core.Syntactic.System.Definitions]
+wf_typ [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_extend [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_empty [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_extend [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_empty [in Mcltt.Core.Syntactic.System.Definitions]
+


+

Projection Index

+

P

+per_elem [in Mcltt.LibTactics]
+


+

Inductive Index

+

C

+Cst.obj [in Mcltt.Core.Syntactic.Syntax]
+ctx_lookup [in Mcltt.Core.Syntactic.System.Definitions]
+

E

+exp [in Mcltt.Core.Syntactic.Syntax]
+

N

+ne [in Mcltt.Core.Syntactic.Syntax]
+nf [in Mcltt.Core.Syntactic.Syntax]
+

P

+PERElem [in Mcltt.LibTactics]
+

S

+sub [in Mcltt.Core.Syntactic.Syntax]
+

W

+wf_ctx_eq [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx [in Mcltt.Core.Syntactic.System.Definitions]
+


+

Instance Index

+

P

+PERProper [in Mcltt.LibTactics]
+predicate_implication_equivalence [in Mcltt.LibTactics]
+

W

+wf_sub_eq_per_elem [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_per_elem [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_Transitive [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_Symmetric [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_PER [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_PER [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_PER [in Mcltt.Core.Syntactic.CtxEq]
+wf_ctx_sub_trans_ins [in Mcltt.Core.Syntactic.CtxSub]
+


+

Abbreviation Index

+

C

+ctx [in Mcltt.Core.Syntactic.Syntax]
+

T

+typ [in Mcltt.Core.Syntactic.Syntax]
+


+

Record Index

+

P

+PERElem [in Mcltt.LibTactics]
+


+

Definition Index

+

C

+Cst.obj_sind [in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_rec [in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_ind [in Mcltt.Core.Syntactic.Syntax]
+Cst.obj_rect [in Mcltt.Core.Syntactic.Syntax]
+ctx_lookup_sind [in Mcltt.Core.Syntactic.System.Definitions]
+ctx_lookup_ind [in Mcltt.Core.Syntactic.System.Definitions]
+

E

+exp_to_num [in Mcltt.Core.Syntactic.Syntax]
+exp_to_nat [in Mcltt.Core.Syntactic.Syntax]
+exp_sind [in Mcltt.Core.Syntactic.Syntax]
+exp_rec [in Mcltt.Core.Syntactic.Syntax]
+exp_ind [in Mcltt.Core.Syntactic.Syntax]
+exp_rect [in Mcltt.Core.Syntactic.Syntax]
+

N

+nat_to_exp [in Mcltt.Core.Syntactic.Syntax]
+ne_to_exp [in Mcltt.Core.Syntactic.Syntax]
+ne_sind [in Mcltt.Core.Syntactic.Syntax]
+ne_rec [in Mcltt.Core.Syntactic.Syntax]
+ne_ind [in Mcltt.Core.Syntactic.Syntax]
+ne_rect [in Mcltt.Core.Syntactic.Syntax]
+nf_to_exp [in Mcltt.Core.Syntactic.Syntax]
+nf_sind [in Mcltt.Core.Syntactic.Syntax]
+nf_rec [in Mcltt.Core.Syntactic.Syntax]
+nf_ind [in Mcltt.Core.Syntactic.Syntax]
+nf_rect [in Mcltt.Core.Syntactic.Syntax]
+num_to_exp [in Mcltt.Core.Syntactic.Syntax]
+

Q

+q [in Mcltt.Core.Syntactic.Syntax]
+

S

+sub_sind [in Mcltt.Core.Syntactic.Syntax]
+sub_rec [in Mcltt.Core.Syntactic.Syntax]
+sub_ind [in Mcltt.Core.Syntactic.Syntax]
+sub_rect [in Mcltt.Core.Syntactic.Syntax]
+

W

+wf_ctx_eq_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_eq_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_mut_ind' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_mut_ind' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_mut_ind' [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_mut_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_subtyp_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_eq_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_eq_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_sub_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_exp_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sub_ind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_sind [in Mcltt.Core.Syntactic.System.Definitions]
+wf_ctx_ind [in Mcltt.Core.Syntactic.System.Definitions]
+

_

+__mark__ [in Mcltt.LibTactics]
+


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Global IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(478 entries)
Notation IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(51 entries)
Module IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(3 entries)
Library IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(14 entries)
Lemma IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(204 entries)
Constructor IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(121 entries)
Projection IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Inductive IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(15 entries)
Instance IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(10 entries)
Abbreviation IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(2 entries)
Record IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1 entry)
Definition IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(56 entries)
+
+ +
+ + + diff --git a/ext/prop-eq/resources/config.js b/ext/prop-eq/resources/config.js new file mode 100644 index 00000000..72be6131 --- /dev/null +++ b/ext/prop-eq/resources/config.js @@ -0,0 +1,72 @@ +var coqdocjs = coqdocjs || {}; + +coqdocjs.repl = { + "forall": "∀", + "exists": "∃", + "~": "¬", + "/\\": "∧", + "\\/": "∨", + "->": "→", + "<-": "←", + "<->": "↔", + "=>": "⇒", + "<>": "≠", + "<=": "≤", + ">=": "≥", + "el": "∈", + "nel": "∉", + "<<=": "⊆", + "|-": "⊢", + ">>": "»", + "<<": "⊆", + "++": "⧺", + "===": "≡", + "=/=": "≢", + "=~=": "≅", + "==>": "⟹", + "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/ext/prop-eq/resources/coqdoc.css b/ext/prop-eq/resources/coqdoc.css new file mode 100644 index 00000000..18dad894 --- /dev/null +++ b/ext/prop-eq/resources/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/ext/prop-eq/resources/coqdocjs.css b/ext/prop-eq/resources/coqdocjs.css new file mode 100644 index 00000000..3022215d --- /dev/null +++ b/ext/prop-eq/resources/coqdocjs.css @@ -0,0 +1,248 @@ +/* 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="false"]:before { + position: absolute; + visibility: visible; + width: 100%; + height: 100%; + display: block; + opacity: 0; + content: "M"; +} +.proof[show="false"]:hover:before { + content: ""; +} + +.proof[show="false"] + br + br { + display: none; +} + +.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; + 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/ext/prop-eq/resources/coqdocjs.js b/ext/prop-eq/resources/coqdocjs.js new file mode 100644 index 00000000..503cc870 --- /dev/null +++ b/ext/prop-eq/resources/coqdocjs.js @@ -0,0 +1,189 @@ +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() { + coqdocjs.replInText.forEach(function(toReplace){ + toArray(document.getElementsByClassName("code")).concat(toArray(document.getElementsByClassName("inlinecode"))).forEach(function(elem){ + toArray(elem.childNodes).forEach(function(node){ + if (node.nodeType != Node.TEXT_NODE) return; + var fragments = node.textContent.split(toReplace); + node.textContent = fragments[fragments.length-1]; + for (var k = 0; k < fragments.length - 1; ++k) { + node.parentNode.insertBefore(document.createTextNode(fragments[k]),node); + var replacement = document.createElement("span"); + replacement.appendChild(document.createTextNode(toReplace)); + replacement.setAttribute("class", "id"); + replacement.setAttribute("type", "keyword"); + node.parentNode.insertBefore(replacement, 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(["Default", "Suggest"], n.previousSibling.previousSibling.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 === "dep") {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/ext/prop-eq/resources/depgraph.css b/ext/prop-eq/resources/depgraph.css new file mode 100644 index 00000000..c63ac641 --- /dev/null +++ b/ext/prop-eq/resources/depgraph.css @@ -0,0 +1,26 @@ +svg.depgraph { + max-width: 100%; +} + +svg.depgraph > text:first-of-type { + font-weight: bold; +} + +.text-highlight-edges text { + opacity: 1 !important; + stroke-width: 3; + font-weight: bold; + fill: indigo; +} + +.edge-highlight path { + opacity: 1; + stroke-width: 3; + stroke: blue; +} + +.edge-highlight polygon { + opacity: 1; + stroke-width: 3; + stroke: blue; +} diff --git a/ext/prop-eq/resources/depgraph.js b/ext/prop-eq/resources/depgraph.js new file mode 100644 index 00000000..d74b71d5 --- /dev/null +++ b/ext/prop-eq/resources/depgraph.js @@ -0,0 +1,47 @@ +function makeEdgesInteractive(evt) { + let svg = evt.target; + let viewBox = svg.viewBox.baseVal; + let edges = document.getElementsByClassName('edge'); + + Array.from(edges).forEach((edge) => { + edge.addEventListener('click', clickEdge); + }); + + function clickEdge() { + let edge = this; + if (edge.classList.contains("edge-highlight")) { + edge.classList.remove("edge-highlight"); + edge.classList.remove("text-highlight-edges"); + } else { + edge.classList.add("edge-highlight"); + edge.classList.add("text-highlight-edges"); + animateEdge(edge); + } + } + + function animateEdge(edge) { + let path = edge.querySelector('path'); + let polygon = edge.querySelector('polygon'); + let width = viewBox.width; + let length = path.getTotalLength(); + let timeUnit = length / width; + // Clear any previous transition + path.style.transition = path.style.WebkitTransition = 'none'; + // Set up the starting positions + path.style.strokeDasharray = length + ' ' + length; + path.style.strokeDashoffset = length; + // Trigger a layout so styles are calculated & the browser + // picks up the starting position before animating + path.getBoundingClientRect(); + // Define the transition + path.style.transition = path.style.WebkitTransition = 'stroke-dashoffset ' + timeUnit + 's ease-in-out'; + path.style.strokeDashoffset = '0'; + + polygon.style.transition = polygon.style.WebkitTransition = 'none'; + polygon.style.opacity = '0'; + polygon.style.transition = polygon.style.WebkitTransition = 'fill-opacity ' + timeUnit/2 + 's ease-in-out ' + timeUnit + 's'; + setTimeout(() => { + polygon.style.opacity = '1'; + }, 1000 * timeUnit); + } +} diff --git a/ext/prop-eq/styling.css b/ext/prop-eq/styling.css new file mode 100644 index 00000000..e2c9f15a --- /dev/null +++ b/ext/prop-eq/styling.css @@ -0,0 +1,1360 @@ +.highlight table td { + padding:5px +} +.highlight table pre { + margin:0 +} +.highlight .cm { + color:#777772; + font-style:italic +} +.highlight .cp { + color:#797676; + font-weight:bold +} +.highlight .c1 { + color:#777772; + font-style:italic +} +.highlight .cs { + color:#797676; + font-weight:bold; + font-style:italic +} +.highlight .c, +.highlight .cd { + color:#777772; + font-style:italic +} +.highlight .err { + color:#a61717; + background-color:#e3d2d2 +} +.highlight .gd { + color:#000000; + background-color:#ffdddd +} +.highlight .ge { + color:#000000; + font-style:italic +} +.highlight .gr { + color:#aa0000 +} +.highlight .gh { + color:#797676 +} +.highlight .gi { + color:#000000; + background-color:#ddffdd +} +.highlight .go { + color:#888888 +} +.highlight .gp { + color:#555555 +} +.highlight .gs { + font-weight:bold +} +.highlight .gu { + color:#aaaaaa +} +.highlight .gt { + color:#aa0000 +} +.highlight .kc { + color:#000000; + font-weight:bold +} +.highlight .kd { + color:#000000; + font-weight:bold +} +.highlight .kn { + color:#000000; + font-weight:bold +} +.highlight .kp { + color:#000000; + font-weight:bold +} +.highlight .kr { + color:#000000; + font-weight:bold +} +.highlight .kt { + color:#445588; + font-weight:bold +} +.highlight .k, +.highlight .kv { + color:#000000; + font-weight:bold +} +.highlight .mf { + color:#009999 +} +.highlight .mh { + color:#009999 +} +.highlight .il { + color:#009999 +} +.highlight .mi { + color:#009999 +} +.highlight .mo { + color:#009999 +} +.highlight .m, +.highlight .mb, +.highlight .mx { + color:#009999 +} +.highlight .sb { + color:#d14 +} +.highlight .sc { + color:#d14 +} +.highlight .sd { + color:#d14 +} +.highlight .s2 { + color:#d14 +} +.highlight .se { + color:#d14 +} +.highlight .sh { + color:#d14 +} +.highlight .si { + color:#d14 +} +.highlight .sx { + color:#d14 +} +.highlight .sr { + color:#009926 +} +.highlight .s1 { + color:#d14 +} +.highlight .ss { + color:#990073 +} +.highlight .s { + color:#d14 +} +.highlight .na { + color:#008080 +} +.highlight .bp { + color:#797676 +} +.highlight .nb { + color:#0086B3 +} +.highlight .nc { + color:#445588; + font-weight:bold +} +.highlight .no { + color:#008080 +} +.highlight .nd { + color:#3c5d5d; + font-weight:bold +} +.highlight .ni { + color:#800080 +} +.highlight .ne { + color:#990000; + font-weight:bold +} +.highlight .nf { + color:#990000; + font-weight:bold +} +.highlight .nl { + color:#990000; + font-weight:bold +} +.highlight .nn { + color:#555555 +} +.highlight .nt { + color:#000080 +} +.highlight .vc { + color:#008080 +} +.highlight .vg { + color:#008080 +} +.highlight .vi { + color:#008080 +} +.highlight .nv { + color:#008080 +} +.highlight .ow { + color:#000000; + font-weight:bold +} +.highlight .o { + color:#000000; + font-weight:bold +} +.highlight .w { + color:#bbbbbb +} +.highlight { + background-color:#f8f8f8 +} +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin:0; + padding:0; + border:0; + font:inherit; + vertical-align:baseline +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display:block +} +ol, +ul { + list-style:none +} +table { + border-collapse:collapse; + border-spacing:0 +} +body { + box-sizing:border-box; + /* color:#373737; */ + background:#f2f2f2; + font-size:16px; + font-family:'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; + line-height:1.5; + -webkit-font-smoothing:antialiased +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin:10px 0; + font-weight:700; + color:#222222; + font-family:'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; + letter-spacing:-1px +} +h1 { + font-size:36px; + font-weight:700 +} +h2 { + padding-bottom:10px; + font-size:32px; + background:url("images/bg_hr.png") repeat-x bottom +} +h3 { + font-size:24px +} +h4 { + font-size:21px +} +h5 { + font-size:18px +} +h6 { + font-size:16px +} +p { + margin:10px 0 15px 0 +} +footer p { + color:#f2f2f2 +} +a { + text-decoration:none; + color:#0F79D0; + text-shadow:none; + transition:color 0.5s ease; + transition:text-shadow 0.5s ease; + -webkit-transition:color 0.5s ease; + -webkit-transition:text-shadow 0.5s ease; + -moz-transition:color 0.5s ease; + -moz-transition:text-shadow 0.5s ease; + -o-transition:color 0.5s ease; + -o-transition:text-shadow 0.5s ease; + -ms-transition:color 0.5s ease; + -ms-transition:text-shadow 0.5s ease +} +a:hover, +a:focus { + text-decoration:underline +} +footer a { + color:#F2F2F2; + text-decoration:underline +} +em, +cite { + font-style:italic +} +strong { + font-weight:bold +} +img { + position:relative; + margin:0 auto; + max-width:739px; + padding:5px; + margin:10px 0 10px 0; + border:1px solid #ebebeb; + box-shadow:0 0 5px #ebebeb; + -webkit-box-shadow:0 0 5px #ebebeb; + -moz-box-shadow:0 0 5px #ebebeb; + -o-box-shadow:0 0 5px #ebebeb; + -ms-box-shadow:0 0 5px #ebebeb +} +p img { + display:inline; + margin:0; + padding:0; + vertical-align:middle; + text-align:center; + border:none +} +pre { + color:#222; +} +pre, +code { + background-color:#fff; + font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + font-size:14px; + border-radius:2px; + -moz-border-radius:2px; + -webkit-border-radius:2px +} +pre { + padding:10px; + box-shadow:0 0 10px rgba(0,0,0,0.1); + overflow:auto +} +code { + padding:3px; + margin:0 3px; + box-shadow:0 0 10px rgba(0,0,0,0.1) +} +pre code { + display:block; + box-shadow:none +} +blockquote { + color:#666; + margin-bottom:20px; + padding:0 0 0 20px; + border-left:3px solid #bbb +} +ul, +ol, +dl { + margin-bottom:15px +} +ul { + list-style-position:inside; + list-style:disc; + padding-left:20px +} +ol { + list-style-position:inside; + list-style:decimal; + padding-left:20px +} +dl dt { + font-weight:bold +} +dl dd { + padding-left:20px; + font-style:italic +} +dl p { + padding-left:20px; + font-style:italic +} +hr { + height:1px; + margin-bottom:5px; + border:none; + background:url("images/bg_hr.png") repeat-x center +} +table { + /* border:1px solid #373737; */ + margin-bottom:20px; + text-align:left +} +th { + font-family:'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; + padding:10px; + background:#373737; + color:#fff +} +td { + padding:10px; + border:1px solid #373737 +} +form { + background:#f2f2f2; + padding:20px +} +.outer { + width:100% +} +.inner { + position:relative; + max-width:850px; + padding:20px 10px; + padding-top: 60px; + margin:0 auto +} +#forkme_banner { + display:block; + position:absolute; + top:0; + right:10px; + z-index:10; + padding:10px 50px 10px 10px; + color:#fff; + background:url("images/blacktocat.png") #0090ff no-repeat 95% 50%; + font-weight:700; + box-shadow:0 0 10px rgba(0,0,0,0.5); + border-bottom-left-radius:2px; + border-bottom-right-radius:2px +} +#header_wrap { + background:#212121; + background:-moz-linear-gradient(top, #373737, #212121); + background:-webkit-linear-gradient(top, #373737, #212121); + background:-ms-linear-gradient(top, #373737, #212121); + background:-o-linear-gradient(top, #373737, #212121); + background:linear-gradient(to top, #373737, #212121) +} +#header_wrap .inner { + padding:50px 10px 30px 10px +} +.project_title { + margin:0; + color:#fff; + font-size:42px; + font-weight:700; + text-shadow:#111 0px 0px 10px +} +#project_tagline { + color:#fff; + font-size:24px; + font-weight:300; + background:none; + text-shadow:#111 0px 0px 10px +} +#downloads { + position:absolute; + width:315px; + z-index:10; + bottom:-40px; + right:0; + height:70px; + background:url("images/icon_download.png") no-repeat 0% 90% +} +.zip_download_link { + display:block; + float:right; + width:90px; + height:70px; + text-indent:-5000px; + overflow:hidden; + background:url(images/sprite_download.png) no-repeat bottom left +} +.tar_download_link { + display:block; + float:right; + width:90px; + height:70px; + text-indent:-5000px; + overflow:hidden; + background:url(images/sprite_download.png) no-repeat bottom right; + margin-left:10px +} +.zip_download_link:hover { + background:url(images/sprite_download.png) no-repeat top left +} +.tar_download_link:hover { + background:url(images/sprite_download.png) no-repeat top right +} + +.vdi_download_link { + display:block; + float:right; + width:80px; + height:70px; + text-indent:-5000px; + overflow:hidden; + background-image:url(images/vdi_grey.png); + background-size:cover; + background-repeat:no-repeat; + background-position:center center; +} +.vdi_download_link:hover { + background-image:url(images/vdi_blue.png); +} + +#main_content_wrap { + background:#f2f2f2; + border-top:1px solid #111; + border-bottom:1px solid #111 +} +#main_content { + padding-top:40px +} +#footer_wrap { + background:#212121 +} +@media screen and (max-width: 992px) { + img { + max-width:100% + } +} +@media screen and (max-width: 480px) { + body { + font-size:14px + } + #downloads { + display:none + } + .inner { + min-width:320px; + max-width:480px + } + #project_title { + font-size:32px + } + h1 { + font-size:28px + } + h2 { + font-size:24px + } + h3 { + font-size:21px + } + h4 { + font-size:18px + } + h5 { + font-size:14px + } + h6 { + font-size:12px + } + code, + pre { + font-size:11px + } +} +@media screen and (max-width: 320px) { + body { + font-size:14px + } + #downloads { + display:none + } + .inner { + min-width:240px; + max-width:320px + } + #project_title { + font-size:28px + } + h1 { + font-size:24px + } + h2 { + font-size:21px + } + h3 { + font-size:18px + } + h4 { + font-size:16px + } + h5 { + font-size:14px + } + h6 { + font-size:12px + } + code, + pre { + min-width:240px; + max-width:320px; + font-size:11px + } +} + +@font-face { + font-family: octicons-link; + src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); +} + +body { + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; + color: #333; + font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + line-height: 1.6; + word-wrap: break-word; + /* width: 800px; */ + max-width: 99%; + box-sizing: border-box; + padding: 30px 30px 8rem 30px; + margin-left: auto; + margin-right: auto; +} + +body a { + background-color: transparent; +} + +body a:active, +body a:hover { + outline: 0; +} + +body strong { + font-weight: bold; +} + +body h1 { + font-size: 2em; + margin: 0.67em 0; +} + +body img { + border: 0; +} + +body hr { + box-sizing: content-box; + height: 0; +} + +body pre { + overflow: auto; +} + +body code, +body kbd, +body pre { + font-family: monospace, monospace; + font-size: 1em; +} + +body input { + color: inherit; + font: inherit; + margin: 0; +} + +body html input[disabled] { + cursor: default; +} + +body input { + line-height: normal; +} + +body input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +body table { + border-collapse: collapse; + border-spacing: 0; +} + +body td, +body th { + padding: 0; +} + +body * { + box-sizing: border-box; +} + +body input { + font: 13px / 1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +body a { + color: #4078c0; + text-decoration: none; +} + +body a:hover, +body a:active { + text-decoration: underline; +} + +body hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 1px solid #ddd; +} + +body hr:before { + display: table; + content: ""; +} + +body hr:after { + display: table; + clear: both; + content: ""; +} + +body h1, +body h2, +body h3, +body h4, +body h5, +body h6 { + margin-top: 15px; + margin-bottom: 15px; + line-height: 1.1; +} + +body h1 { + font-size: 30px; +} + +body h2 { + font-size: 21px; +} + +body h3 { + font-size: 16px; +} + +body h4 { + font-size: 14px; +} + +body h5 { + font-size: 12px; +} + +body h6 { + font-size: 11px; +} + +body blockquote { + margin: 0; +} + +body ul, +body ol { + padding: 0; + margin-top: 0; + margin-bottom: 0; +} + +body ol ol, +body ul ol { + list-style-type: lower-roman; +} + +body ul ul ol, +body ul ol ol, +body ol ul ol, +body ol ol ol { + list-style-type: lower-alpha; +} + +body dd { + margin-left: 0; +} + +body code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 12px; +} + +body pre { + margin-top: 0; + margin-bottom: 0; + font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +body .select::-ms-expand { + opacity: 0; +} + +body .octicon { + font: normal normal normal 16px/1 octicons-link; + display: inline-block; + text-decoration: none; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +body .octicon-link:before { + content: '\f05c'; +} + +body:before { + display: table; + content: ""; +} + +body:after { + display: table; + clear: both; + content: ""; +} + +body>*:first-child { + margin-top: 0 !important; +} + +body>*:last-child { + margin-bottom: 0 !important; +} + +body a:not([href]) { + color: inherit; + text-decoration: none; +} + +body .anchor { + display: inline-block; + padding-right: 2px; + margin-left: -18px; +} + +body .anchor:focus { + outline: none; +} + +body h1, +body h2, +body h3, +body h4, +body h5, +body h6 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + line-height: 1.4; +} + +body h1 .octicon-link, +body h2 .octicon-link, +body h3 .octicon-link, +body h4 .octicon-link, +body h5 .octicon-link, +body h6 .octicon-link { + color: #000; + vertical-align: middle; + visibility: hidden; +} + +body h1:hover .anchor, +body h2:hover .anchor, +body h3:hover .anchor, +body h4:hover .anchor, +body h5:hover .anchor, +body h6:hover .anchor { + text-decoration: none; +} + +body h1:hover .anchor .octicon-link, +body h2:hover .anchor .octicon-link, +body h3:hover .anchor .octicon-link, +body h4:hover .anchor .octicon-link, +body h5:hover .anchor .octicon-link, +body h6:hover .anchor .octicon-link { + visibility: visible; +} + +body h1 { + padding-bottom: 0.3em; + font-size: 1.75em; + line-height: 1.2; +} + +body h1 .anchor { + line-height: 1; +} + +body h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + line-height: 1.225; +} + +body h2 .anchor { + line-height: 1; +} + +body h3 { + font-size: 1.25em; + line-height: 1.43; +} + +body h3 .anchor { + line-height: 1.2; +} + +body h4 { + font-size: 1em; +} + +body h4 .anchor { + line-height: 1.2; +} + +body h5 { + font-size: 1em; +} + +body h5 .anchor { + line-height: 1.1; +} + +body h6 { + font-size: 1em; + color: #777; +} + +body h6 .anchor { + line-height: 1.1; +} + +body p, +body blockquote, +body ul, +body ol, +body dl, +body table, +body pre { + margin-top: 0; + margin-bottom: 16px; +} + +body hr { + height: 4px; + padding: 0; + margin: 16px 0; + background-color: #e7e7e7; + border: 0 none; +} + +body ul, +body ol { + padding-left: 2em; +} + +body ul ul, +body ul ol, +body ol ol, +body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +body li>p { + margin-top: 16px; +} + +body dl { + padding: 0; +} + +body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: bold; +} + +body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +body blockquote { + padding: 0 15px; + color: #777; + border-left: 4px solid #ddd; +} + +body blockquote>:first-child { + margin-top: 0; +} + +body blockquote>:last-child { + margin-bottom: 0; +} + +body table { + display: block; + width: 100%; + overflow: auto; + word-break: normal; + word-break: keep-all; +} + +body table th { + font-weight: bold; +} + +body table th, +body table td { + padding: 6px 13px; + border: 1px solid #ddd; +} + +body table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} + +body table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; +} + +body code { + padding: 0; + padding-top: 0; + padding-bottom: 0; + margin: 0; + font-size: 85%; + background-color: rgba(0,0,0,0.04); + border-radius: 3px; +} + +body code:before, +body code:after { + letter-spacing: -0.2em; + content: "\00a0"; +} + +body pre>code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +body .highlight { + margin-bottom: 16px; +} + +body .highlight pre, +body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f7f7f7; + border-radius: 3px; +} + +body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +body pre { + word-wrap: normal; +} + +body pre code { + display: inline; + max-width: initial; + padding: 0; + margin: 0; + overflow: initial; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +body pre code:before, +body pre code:after { + content: normal; +} + +body kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + color: #555; + vertical-align: middle; + background-color: #fcfcfc; + border: solid 1px #ccc; + border-bottom-color: #bbb; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #bbb; +} + +body .pl-c { + color: #969896; +} + +body .pl-c1, +body .pl-s .pl-v { + color: #0086b3; +} + +body .pl-e, +body .pl-en { + color: #795da3; +} + +body .pl-s .pl-s1, +body .pl-smi { + color: #333; +} + +body .pl-ent { + color: #63a35c; +} + +body .pl-k { + color: #a71d5d; +} + +body .pl-pds, +body .pl-s, +body .pl-s .pl-pse .pl-s1, +body .pl-sr, +body .pl-sr .pl-cce, +body .pl-sr .pl-sra, +body .pl-sr .pl-sre { + color: #183691; +} + +body .pl-v { + color: #ed6a43; +} + +body .pl-id { + color: #b52a1d; +} + +body .pl-ii { + background-color: #b52a1d; + color: #f8f8f8; +} + +body .pl-sr .pl-cce { + color: #63a35c; + font-weight: bold; +} + +body .pl-ml { + color: #693a17; +} + +body .pl-mh, +body .pl-mh .pl-en, +body .pl-ms { + color: #1d3e81; + font-weight: bold; +} + +body .pl-mq { + color: #008080; +} + +body .pl-mi { + color: #333; + font-style: italic; +} + +body .pl-mb { + color: #333; + font-weight: bold; +} + +body .pl-md { + background-color: #ffecec; + color: #bd2c00; +} + +body .pl-mi1 { + background-color: #eaffea; + color: #55a532; +} + +body .pl-mdr { + color: #795da3; + font-weight: bold; +} + +body .pl-mo { + color: #1d3e81; +} + +body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace; + line-height: 10px; + color: #555; + vertical-align: middle; + background-color: #fcfcfc; + border: solid 1px #ccc; + border-bottom-color: #bbb; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #bbb; +} + +body .task-list-item { + list-style-type: none; +} + +body .task-list-item+.task-list-item { + margin-top: 3px; +} + +body .task-list-item input { + margin: 0 0.35em 0.25em -1.6em; + vertical-align: middle; +} + +body :checked+.radio-label { + z-index: 1; + position: relative; + border-color: #4078c0; +} diff --git a/ext/prop-eq/toc.html b/ext/prop-eq/toc.html new file mode 100644 index 00000000..c9950de8 --- /dev/null +++ b/ext/prop-eq/toc.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + +