Compare commits

...
Sign in to create a new pull request.

74 commits
master ... main

Author SHA1 Message Date
0f1e85c853 Prove injectivity of Pair and Lambdas 2025-01-10 13:31:58 -05:00
fd8335a803 Add injectivity for pairs 2025-01-10 12:39:47 -05:00
34a0c2856e Prove most of the confluence results for eta reduction 2025-01-09 20:21:38 -05:00
e75d7745fe Finish normalization 2025-01-09 16:17:38 -05:00
0d3b751a33 . 2025-01-09 15:16:05 -05:00
7021497615 Finish adequacy 2025-01-09 15:15:11 -05:00
Yiyun Liu
bf2a369824 Generalize the model to talk about termination 2025-01-09 00:35:46 -05:00
Yiyun Liu
ec03826083 Add beta without the junk rules 2025-01-08 19:47:54 -05:00
9ab338c9e1 Add wn 2025-01-08 15:31:40 -05:00
602fe929bc Add pars_var_inv 2025-01-05 00:21:19 -05:00
05d330254e Fix ERed 2025-01-04 23:59:21 -05:00
a6fd48c009 Finish prov_extract 2025-01-04 23:38:44 -05:00
919f1513ce Show that prov is preserved by beta red and eta exp 2025-01-04 23:02:12 -05:00
f0da5c97bb Show that rpar preserves prov 2025-01-04 20:38:04 -05:00
ee7be7584c Remove unnecessary usage of Equations 2025-01-04 16:56:21 -05:00
9a52ab334f Finish all cases 2024-12-31 00:04:20 -05:00
a4682dedbe Prove all except the proj2 case 2024-12-30 23:43:15 -05:00
708cac5d53 Finish all except the sigma case 2024-12-30 23:00:31 -05:00
2f68e6c87c Finish structural rules 2024-12-30 22:07:35 -05:00
5347d573b5 Add semwt and its renaming lemmas 2024-12-30 21:43:41 -05:00
1a9cd6bda9 Start refactoring the logrel to include only closed terms 2024-12-30 20:46:43 -05:00
dd63ebf2e9 Prove that beta-eta equivalent types have the same meaning 2024-12-30 15:52:35 -05:00
86b8043215 Prove the pi case for interpext_join 2024-12-30 14:11:43 -05:00
d12de328b6 Generalize ProdSpace to BindSpace 2024-12-30 13:12:52 -05:00
Yiyun Liu
2fe0d33592 Minor 2024-12-29 22:36:15 -05:00
Yiyun Liu
6eba80ed70 Combine the different prov cases into one function 2024-12-29 22:33:37 -05:00
Yiyun Liu
8fc90f5935 Save 2024-12-27 14:32:41 -05:00
Yiyun Liu
1fd0ffe04d Minor 2024-12-27 12:15:44 -05:00
Yiyun Liu
7f4c31b14e Generalize Pi to TBind so we have both sigma and pi 2024-12-27 12:12:19 -05:00
Yiyun Liu
368c83dd8e Add the statement that the logrel respects beta eta laws 2024-12-27 02:09:34 -05:00
Yiyun Liu
8e0f9a1e0a Add the logical relation 2024-12-27 01:38:25 -05:00
Yiyun Liu
1bd6a8508e
Create README.md 2024-12-25 21:15:48 -05:00
Yiyun Liu
80d8b13e49 Prove join univ pi contra 2024-12-25 21:11:58 -05:00
Yiyun Liu
e2702ed277 Add join pi inj 2024-12-25 20:15:55 -05:00
Yiyun Liu
98a11fb7ac Remove funext from Equations 2024-12-25 19:59:13 -05:00
Yiyun Liu
22c7eff954 No admits 2024-12-25 18:09:20 -05:00
Yiyun Liu
efc3662f31 Add erpars.picong 2024-12-25 18:05:49 -05:00
Yiyun Liu
a6f89ef7f7 Add abs and paircong 2024-12-25 17:55:47 -05:00
Yiyun Liu
ff0a54aaae Add ERPars.AppCong 2024-12-25 17:48:37 -05:00
Yiyun Liu
2e49ff6667 Finish hindley rosen 2024-12-25 17:33:56 -05:00
Yiyun Liu
ce29464f08 Make progress on par epar 2024-12-25 13:49:45 -05:00
Yiyun Liu
a34afed3d5 Add ERPar 2024-12-25 13:40:51 -05:00
Yiyun Liu
2b26735fff One admit left 2024-12-25 13:15:52 -05:00
Yiyun Liu
2d20d06fd2 Finish anti-renaming 2024-12-25 13:11:12 -05:00
Yiyun Liu
add8a62d85 Almost done! 2024-12-25 01:57:46 -05:00
Yiyun Liu
3de6dae199 Note: Changed the definition of extract! 2024-12-25 01:51:50 -05:00
Yiyun Liu
3cb40ccb9e Minor 2024-12-25 01:24:56 -05:00
Yiyun Liu
c0faae5d8a Proof the termination of extract 2024-12-25 01:22:28 -05:00
Yiyun Liu
9bba98d411 Finish most of the pi injectivity proof 2024-12-25 01:11:49 -05:00
Yiyun Liu
213d3f1d58 Prove prov_extract 2024-12-25 01:01:59 -05:00
Yiyun Liu
2050b08004 Finish (most of) prov_par 2024-12-25 00:16:26 -05:00
Yiyun Liu
2478c0f2e1 Add prov ren 2024-12-24 23:50:02 -05:00
Yiyun Liu
a1c4d5e6a8 Add induction principle 2024-12-24 22:57:28 -05:00
Yiyun Liu
cbe9941046 Need to tweak the definition of Prov 2024-12-24 15:31:50 -05:00
Yiyun Liu
c6edc1b0be Add prov function (WIP) 2024-12-24 01:19:42 -05:00
Yiyun Liu
46ec21b763 Add pi type 2024-12-24 01:09:02 -05:00
Yiyun Liu
90b24b259b Add confluence proof for EPar and RPar 2024-12-24 00:52:06 -05:00
Yiyun Liu
0407bc7bb9 Finish diamond property for RPar 2024-12-24 00:37:42 -05:00
Yiyun Liu
7b86311260 Prove diamond for EPar 2024-12-24 00:12:42 -05:00
Yiyun Liu
233f229b3f Add Abs_EPar' 2024-12-23 23:44:57 -05:00
Yiyun Liu
86dab74384 Add outermost expansion and some related lemmas 2024-12-23 01:13:55 -05:00
Yiyun Liu
a38a6eb8e8 Stuck at diamodn property 2024-12-22 23:51:01 -05:00
Yiyun Liu
df9c91dad5 Start EPar_diamond 2024-12-22 16:06:36 -05:00
Yiyun Liu
6daef9c807 Finish full commutativity 2024-12-22 15:44:48 -05:00
Yiyun Liu
4599c1d65d Finish commutativity proof 2024-12-22 15:22:41 -05:00
Yiyun Liu
fbe0bc4acc Finish Pair EPar 2024-12-22 15:08:01 -05:00
086e68f43e Prove one Pair EPar case 2024-12-22 12:40:20 -05:00
ecee278d04 Write down the statement of pair_epar 2024-12-22 12:12:34 -05:00
ccbb9a1395 Simplify the syntax by combining proj1 and proj2 2024-12-22 10:38:58 -05:00
e8ec23a3e7 Add the substitution lemmas for RPars 2024-12-21 22:36:14 -05:00
2bffbcaf0c Work on RPar morphing 2024-12-21 00:57:00 -05:00
7e4b0f3e81 Minor 2024-12-21 00:05:42 -05:00
ec19e91a47 Finish Abs_EPar 2024-12-20 23:58:44 -05:00
393a022f04 Fix Abs_EPar 2024-12-20 22:56:08 -05:00
6 changed files with 3596 additions and 228 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
This repository contains a proof of pi injectivity for an untyped equational theory with surjective pairing and extensionality.

View file

@ -1,8 +1,16 @@
nat : Type
Tm(VarTm) : Type
-- nat : Type
PTag : Type
TTag : Type
TPi : TTag
TSig : TTag
PL : PTag
PR : PTag
Abs : (bind Tm in Tm) -> Tm
App : Tm -> Tm -> Tm
Pair : Tm -> Tm -> Tm
Proj1 : Tm -> Tm
Proj2 : Tm -> Tm
Proj : PTag -> Tm -> Tm
TBind : TTag -> Tm -> (bind Tm in Tm) -> Tm
Bot : Tm
Univ : nat -> Tm

View file

@ -5,13 +5,43 @@ Require Import Setoid Morphisms Relation_Definitions.
Module Core.
Inductive PTag : Type :=
| PL : PTag
| PR : PTag.
Lemma congr_PL : PL = PL.
Proof.
exact (eq_refl).
Qed.
Lemma congr_PR : PR = PR.
Proof.
exact (eq_refl).
Qed.
Inductive TTag : Type :=
| TPi : TTag
| TSig : TTag.
Lemma congr_TPi : TPi = TPi.
Proof.
exact (eq_refl).
Qed.
Lemma congr_TSig : TSig = TSig.
Proof.
exact (eq_refl).
Qed.
Inductive Tm (n_Tm : nat) : Type :=
| VarTm : fin n_Tm -> Tm n_Tm
| Abs : Tm (S n_Tm) -> Tm n_Tm
| App : Tm n_Tm -> Tm n_Tm -> Tm n_Tm
| Pair : Tm n_Tm -> Tm n_Tm -> Tm n_Tm
| Proj1 : Tm n_Tm -> Tm n_Tm
| Proj2 : Tm n_Tm -> Tm n_Tm.
| Proj : PTag -> Tm n_Tm -> Tm n_Tm
| TBind : TTag -> Tm n_Tm -> Tm (S n_Tm) -> Tm n_Tm
| Bot : Tm n_Tm
| Univ : nat -> Tm n_Tm.
Lemma congr_Abs {m_Tm : nat} {s0 : Tm (S m_Tm)} {t0 : Tm (S m_Tm)}
(H0 : s0 = t0) : Abs m_Tm s0 = Abs m_Tm t0.
@ -35,16 +65,33 @@ exact (eq_trans (eq_trans eq_refl (ap (fun x => Pair m_Tm x s1) H0))
(ap (fun x => Pair m_Tm t0 x) H1)).
Qed.
Lemma congr_Proj1 {m_Tm : nat} {s0 : Tm m_Tm} {t0 : Tm m_Tm} (H0 : s0 = t0) :
Proj1 m_Tm s0 = Proj1 m_Tm t0.
Lemma congr_Proj {m_Tm : nat} {s0 : PTag} {s1 : Tm m_Tm} {t0 : PTag}
{t1 : Tm m_Tm} (H0 : s0 = t0) (H1 : s1 = t1) :
Proj m_Tm s0 s1 = Proj m_Tm t0 t1.
Proof.
exact (eq_trans eq_refl (ap (fun x => Proj1 m_Tm x) H0)).
exact (eq_trans (eq_trans eq_refl (ap (fun x => Proj m_Tm x s1) H0))
(ap (fun x => Proj m_Tm t0 x) H1)).
Qed.
Lemma congr_Proj2 {m_Tm : nat} {s0 : Tm m_Tm} {t0 : Tm m_Tm} (H0 : s0 = t0) :
Proj2 m_Tm s0 = Proj2 m_Tm t0.
Lemma congr_TBind {m_Tm : nat} {s0 : TTag} {s1 : Tm m_Tm} {s2 : Tm (S m_Tm)}
{t0 : TTag} {t1 : Tm m_Tm} {t2 : Tm (S m_Tm)} (H0 : s0 = t0) (H1 : s1 = t1)
(H2 : s2 = t2) : TBind m_Tm s0 s1 s2 = TBind m_Tm t0 t1 t2.
Proof.
exact (eq_trans eq_refl (ap (fun x => Proj2 m_Tm x) H0)).
exact (eq_trans
(eq_trans (eq_trans eq_refl (ap (fun x => TBind m_Tm x s1 s2) H0))
(ap (fun x => TBind m_Tm t0 x s2) H1))
(ap (fun x => TBind m_Tm t0 t1 x) H2)).
Qed.
Lemma congr_Bot {m_Tm : nat} : Bot m_Tm = Bot m_Tm.
Proof.
exact (eq_refl).
Qed.
Lemma congr_Univ {m_Tm : nat} {s0 : nat} {t0 : nat} (H0 : s0 = t0) :
Univ m_Tm s0 = Univ m_Tm t0.
Proof.
exact (eq_trans eq_refl (ap (fun x => Univ m_Tm x) H0)).
Qed.
Lemma upRen_Tm_Tm {m : nat} {n : nat} (xi : fin m -> fin n) :
@ -66,8 +113,11 @@ Fixpoint ren_Tm {m_Tm : nat} {n_Tm : nat} (xi_Tm : fin m_Tm -> fin n_Tm)
| Abs _ s0 => Abs n_Tm (ren_Tm (upRen_Tm_Tm xi_Tm) s0)
| App _ s0 s1 => App n_Tm (ren_Tm xi_Tm s0) (ren_Tm xi_Tm s1)
| Pair _ s0 s1 => Pair n_Tm (ren_Tm xi_Tm s0) (ren_Tm xi_Tm s1)
| Proj1 _ s0 => Proj1 n_Tm (ren_Tm xi_Tm s0)
| Proj2 _ s0 => Proj2 n_Tm (ren_Tm xi_Tm s0)
| Proj _ s0 s1 => Proj n_Tm s0 (ren_Tm xi_Tm s1)
| TBind _ s0 s1 s2 =>
TBind n_Tm s0 (ren_Tm xi_Tm s1) (ren_Tm (upRen_Tm_Tm xi_Tm) s2)
| Bot _ => Bot n_Tm
| Univ _ s0 => Univ n_Tm s0
end.
Lemma up_Tm_Tm {m : nat} {n_Tm : nat} (sigma : fin m -> Tm n_Tm) :
@ -90,8 +140,11 @@ Fixpoint subst_Tm {m_Tm : nat} {n_Tm : nat} (sigma_Tm : fin m_Tm -> Tm n_Tm)
| Abs _ s0 => Abs n_Tm (subst_Tm (up_Tm_Tm sigma_Tm) s0)
| App _ s0 s1 => App n_Tm (subst_Tm sigma_Tm s0) (subst_Tm sigma_Tm s1)
| Pair _ s0 s1 => Pair n_Tm (subst_Tm sigma_Tm s0) (subst_Tm sigma_Tm s1)
| Proj1 _ s0 => Proj1 n_Tm (subst_Tm sigma_Tm s0)
| Proj2 _ s0 => Proj2 n_Tm (subst_Tm sigma_Tm s0)
| Proj _ s0 s1 => Proj n_Tm s0 (subst_Tm sigma_Tm s1)
| TBind _ s0 s1 s2 =>
TBind n_Tm s0 (subst_Tm sigma_Tm s1) (subst_Tm (up_Tm_Tm sigma_Tm) s2)
| Bot _ => Bot n_Tm
| Univ _ s0 => Univ n_Tm s0
end.
Lemma upId_Tm_Tm {m_Tm : nat} (sigma : fin m_Tm -> Tm m_Tm)
@ -126,8 +179,12 @@ subst_Tm sigma_Tm s = s :=
| Pair _ s0 s1 =>
congr_Pair (idSubst_Tm sigma_Tm Eq_Tm s0)
(idSubst_Tm sigma_Tm Eq_Tm s1)
| Proj1 _ s0 => congr_Proj1 (idSubst_Tm sigma_Tm Eq_Tm s0)
| Proj2 _ s0 => congr_Proj2 (idSubst_Tm sigma_Tm Eq_Tm s0)
| Proj _ s0 s1 => congr_Proj (eq_refl s0) (idSubst_Tm sigma_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0) (idSubst_Tm sigma_Tm Eq_Tm s1)
(idSubst_Tm (up_Tm_Tm sigma_Tm) (upId_Tm_Tm _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma upExtRen_Tm_Tm {m : nat} {n : nat} (xi : fin m -> fin n)
@ -164,8 +221,14 @@ Fixpoint extRen_Tm {m_Tm : nat} {n_Tm : nat} (xi_Tm : fin m_Tm -> fin n_Tm)
| Pair _ s0 s1 =>
congr_Pair (extRen_Tm xi_Tm zeta_Tm Eq_Tm s0)
(extRen_Tm xi_Tm zeta_Tm Eq_Tm s1)
| Proj1 _ s0 => congr_Proj1 (extRen_Tm xi_Tm zeta_Tm Eq_Tm s0)
| Proj2 _ s0 => congr_Proj2 (extRen_Tm xi_Tm zeta_Tm Eq_Tm s0)
| Proj _ s0 s1 =>
congr_Proj (eq_refl s0) (extRen_Tm xi_Tm zeta_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0) (extRen_Tm xi_Tm zeta_Tm Eq_Tm s1)
(extRen_Tm (upRen_Tm_Tm xi_Tm) (upRen_Tm_Tm zeta_Tm)
(upExtRen_Tm_Tm _ _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma upExt_Tm_Tm {m : nat} {n_Tm : nat} (sigma : fin m -> Tm n_Tm)
@ -204,8 +267,13 @@ Fixpoint ext_Tm {m_Tm : nat} {n_Tm : nat} (sigma_Tm : fin m_Tm -> Tm n_Tm)
| Pair _ s0 s1 =>
congr_Pair (ext_Tm sigma_Tm tau_Tm Eq_Tm s0)
(ext_Tm sigma_Tm tau_Tm Eq_Tm s1)
| Proj1 _ s0 => congr_Proj1 (ext_Tm sigma_Tm tau_Tm Eq_Tm s0)
| Proj2 _ s0 => congr_Proj2 (ext_Tm sigma_Tm tau_Tm Eq_Tm s0)
| Proj _ s0 s1 => congr_Proj (eq_refl s0) (ext_Tm sigma_Tm tau_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0) (ext_Tm sigma_Tm tau_Tm Eq_Tm s1)
(ext_Tm (up_Tm_Tm sigma_Tm) (up_Tm_Tm tau_Tm) (upExt_Tm_Tm _ _ Eq_Tm)
s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma up_ren_ren_Tm_Tm {k : nat} {l : nat} {m : nat} (xi : fin k -> fin l)
@ -243,8 +311,14 @@ Fixpoint compRenRen_Tm {k_Tm : nat} {l_Tm : nat} {m_Tm : nat}
| Pair _ s0 s1 =>
congr_Pair (compRenRen_Tm xi_Tm zeta_Tm rho_Tm Eq_Tm s0)
(compRenRen_Tm xi_Tm zeta_Tm rho_Tm Eq_Tm s1)
| Proj1 _ s0 => congr_Proj1 (compRenRen_Tm xi_Tm zeta_Tm rho_Tm Eq_Tm s0)
| Proj2 _ s0 => congr_Proj2 (compRenRen_Tm xi_Tm zeta_Tm rho_Tm Eq_Tm s0)
| Proj _ s0 s1 =>
congr_Proj (eq_refl s0) (compRenRen_Tm xi_Tm zeta_Tm rho_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0) (compRenRen_Tm xi_Tm zeta_Tm rho_Tm Eq_Tm s1)
(compRenRen_Tm (upRen_Tm_Tm xi_Tm) (upRen_Tm_Tm zeta_Tm)
(upRen_Tm_Tm rho_Tm) (up_ren_ren _ _ _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma up_ren_subst_Tm_Tm {k : nat} {l : nat} {m_Tm : nat}
@ -291,10 +365,16 @@ Fixpoint compRenSubst_Tm {k_Tm : nat} {l_Tm : nat} {m_Tm : nat}
| Pair _ s0 s1 =>
congr_Pair (compRenSubst_Tm xi_Tm tau_Tm theta_Tm Eq_Tm s0)
(compRenSubst_Tm xi_Tm tau_Tm theta_Tm Eq_Tm s1)
| Proj1 _ s0 =>
congr_Proj1 (compRenSubst_Tm xi_Tm tau_Tm theta_Tm Eq_Tm s0)
| Proj2 _ s0 =>
congr_Proj2 (compRenSubst_Tm xi_Tm tau_Tm theta_Tm Eq_Tm s0)
| Proj _ s0 s1 =>
congr_Proj (eq_refl s0)
(compRenSubst_Tm xi_Tm tau_Tm theta_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0)
(compRenSubst_Tm xi_Tm tau_Tm theta_Tm Eq_Tm s1)
(compRenSubst_Tm (upRen_Tm_Tm xi_Tm) (up_Tm_Tm tau_Tm)
(up_Tm_Tm theta_Tm) (up_ren_subst_Tm_Tm _ _ _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma up_subst_ren_Tm_Tm {k : nat} {l_Tm : nat} {m_Tm : nat}
@ -362,10 +442,16 @@ ren_Tm zeta_Tm (subst_Tm sigma_Tm s) = subst_Tm theta_Tm s :=
| Pair _ s0 s1 =>
congr_Pair (compSubstRen_Tm sigma_Tm zeta_Tm theta_Tm Eq_Tm s0)
(compSubstRen_Tm sigma_Tm zeta_Tm theta_Tm Eq_Tm s1)
| Proj1 _ s0 =>
congr_Proj1 (compSubstRen_Tm sigma_Tm zeta_Tm theta_Tm Eq_Tm s0)
| Proj2 _ s0 =>
congr_Proj2 (compSubstRen_Tm sigma_Tm zeta_Tm theta_Tm Eq_Tm s0)
| Proj _ s0 s1 =>
congr_Proj (eq_refl s0)
(compSubstRen_Tm sigma_Tm zeta_Tm theta_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0)
(compSubstRen_Tm sigma_Tm zeta_Tm theta_Tm Eq_Tm s1)
(compSubstRen_Tm (up_Tm_Tm sigma_Tm) (upRen_Tm_Tm zeta_Tm)
(up_Tm_Tm theta_Tm) (up_subst_ren_Tm_Tm _ _ _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma up_subst_subst_Tm_Tm {k : nat} {l_Tm : nat} {m_Tm : nat}
@ -434,10 +520,16 @@ subst_Tm tau_Tm (subst_Tm sigma_Tm s) = subst_Tm theta_Tm s :=
| Pair _ s0 s1 =>
congr_Pair (compSubstSubst_Tm sigma_Tm tau_Tm theta_Tm Eq_Tm s0)
(compSubstSubst_Tm sigma_Tm tau_Tm theta_Tm Eq_Tm s1)
| Proj1 _ s0 =>
congr_Proj1 (compSubstSubst_Tm sigma_Tm tau_Tm theta_Tm Eq_Tm s0)
| Proj2 _ s0 =>
congr_Proj2 (compSubstSubst_Tm sigma_Tm tau_Tm theta_Tm Eq_Tm s0)
| Proj _ s0 s1 =>
congr_Proj (eq_refl s0)
(compSubstSubst_Tm sigma_Tm tau_Tm theta_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0)
(compSubstSubst_Tm sigma_Tm tau_Tm theta_Tm Eq_Tm s1)
(compSubstSubst_Tm (up_Tm_Tm sigma_Tm) (up_Tm_Tm tau_Tm)
(up_Tm_Tm theta_Tm) (up_subst_subst_Tm_Tm _ _ _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma renRen_Tm {k_Tm : nat} {l_Tm : nat} {m_Tm : nat}
@ -546,8 +638,14 @@ Fixpoint rinst_inst_Tm {m_Tm : nat} {n_Tm : nat}
| Pair _ s0 s1 =>
congr_Pair (rinst_inst_Tm xi_Tm sigma_Tm Eq_Tm s0)
(rinst_inst_Tm xi_Tm sigma_Tm Eq_Tm s1)
| Proj1 _ s0 => congr_Proj1 (rinst_inst_Tm xi_Tm sigma_Tm Eq_Tm s0)
| Proj2 _ s0 => congr_Proj2 (rinst_inst_Tm xi_Tm sigma_Tm Eq_Tm s0)
| Proj _ s0 s1 =>
congr_Proj (eq_refl s0) (rinst_inst_Tm xi_Tm sigma_Tm Eq_Tm s1)
| TBind _ s0 s1 s2 =>
congr_TBind (eq_refl s0) (rinst_inst_Tm xi_Tm sigma_Tm Eq_Tm s1)
(rinst_inst_Tm (upRen_Tm_Tm xi_Tm) (up_Tm_Tm sigma_Tm)
(rinstInst_up_Tm_Tm _ _ Eq_Tm) s2)
| Bot _ => congr_Bot
| Univ _ s0 => congr_Univ (eq_refl s0)
end.
Lemma rinstInst'_Tm {m_Tm : nat} {n_Tm : nat} (xi_Tm : fin m_Tm -> fin n_Tm)
@ -746,9 +844,13 @@ Core.
Arguments VarTm {n_Tm}.
Arguments Proj2 {n_Tm}.
Arguments Univ {n_Tm}.
Arguments Proj1 {n_Tm}.
Arguments Bot {n_Tm}.
Arguments TBind {n_Tm}.
Arguments Proj {n_Tm}.
Arguments Pair {n_Tm}.

20
theories/diagram.txt Normal file
View file

@ -0,0 +1,20 @@
a0 --> a3
| |
| |
v v
a1 --> a4
(Abs a3) >>* a2
Abs a0 ----> (Abs a3) >>* a2
| |
| |
Abs a1 ----> (Abs a4) >>*
a0 >> a1
| |
| |
v v
b0 >> b1

File diff suppressed because it is too large Load diff

1003
theories/logrel.v Normal file

File diff suppressed because it is too large Load diff