Finish the injectivity of bind and noconfusion
This commit is contained in:
parent
e444c8408f
commit
af224831e4
2 changed files with 36 additions and 1 deletions
|
@ -1698,6 +1698,15 @@ Module REReds.
|
||||||
rtc RERed.R a b -> SNe a -> SNe b.
|
rtc RERed.R a b -> SNe a -> SNe b.
|
||||||
Proof. induction 1; qauto l:on ctrs:rtc use:RERed.sne_preservation. Qed.
|
Proof. induction 1; qauto l:on ctrs:rtc use:RERed.sne_preservation. Qed.
|
||||||
|
|
||||||
|
Lemma bind_inv n p A B C :
|
||||||
|
rtc (@RERed.R n) (PBind p A B) C ->
|
||||||
|
exists A0 B0, C = PBind p A0 B0 /\ rtc RERed.R A A0 /\ rtc RERed.R B B0.
|
||||||
|
Proof.
|
||||||
|
move E : (PBind p A B) => u hu.
|
||||||
|
move : p A B E.
|
||||||
|
elim : u C / hu; sauto lq:on rew:off.
|
||||||
|
Qed.
|
||||||
|
|
||||||
End REReds.
|
End REReds.
|
||||||
|
|
||||||
Module LoRed.
|
Module LoRed.
|
||||||
|
@ -2097,7 +2106,7 @@ Module DJoin.
|
||||||
sfirstorder use:@rtc_refl unfold:R.
|
sfirstorder use:@rtc_refl unfold:R.
|
||||||
Qed.
|
Qed.
|
||||||
|
|
||||||
Lemma sne_bind_imp n (a b : PTm n) :
|
Lemma sne_bind_noconf n (a b : PTm n) :
|
||||||
R a b -> SNe a -> isbind b -> False.
|
R a b -> SNe a -> isbind b -> False.
|
||||||
Proof.
|
Proof.
|
||||||
move => [c [? ?]] *.
|
move => [c [? ?]] *.
|
||||||
|
@ -2105,4 +2114,29 @@ Module DJoin.
|
||||||
qauto l:on inv:SNe.
|
qauto l:on inv:SNe.
|
||||||
Qed.
|
Qed.
|
||||||
|
|
||||||
|
Lemma sne_univ_noconf n (a b : PTm n) :
|
||||||
|
R a b -> SNe a -> isuniv b -> False.
|
||||||
|
Proof.
|
||||||
|
hauto q:on use:REReds.sne_preservation,
|
||||||
|
REReds.univ_preservation inv:SNe.
|
||||||
|
Qed.
|
||||||
|
|
||||||
|
Lemma bind_univ_noconf n (a b : PTm n) :
|
||||||
|
R a b -> isbind a -> isuniv b -> False.
|
||||||
|
Proof.
|
||||||
|
move => [c [h0 h1]] h2 h3.
|
||||||
|
have {h0 h1 h2 h3} : isbind c /\ isuniv c by
|
||||||
|
hauto l:on use:REReds.bind_preservation,
|
||||||
|
REReds.univ_preservation.
|
||||||
|
case : c => //=; itauto.
|
||||||
|
Qed.
|
||||||
|
|
||||||
|
Lemma bind_inj n p0 p1 (A0 A1 : PTm n) B0 B1 :
|
||||||
|
DJoin.R (PBind p0 A0 B0) (PBind p1 A1 B1) ->
|
||||||
|
p0 = p1 /\ DJoin.R A0 A1 /\ DJoin.R B0 B1.
|
||||||
|
Proof.
|
||||||
|
rewrite /R.
|
||||||
|
hauto lq:on rew:off use:REReds.bind_inv.
|
||||||
|
Qed.
|
||||||
|
|
||||||
End DJoin.
|
End DJoin.
|
||||||
|
|
|
@ -239,6 +239,7 @@ Lemma sne_bind_noconf n (a b : PTm n) :
|
||||||
Proof.
|
Proof.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Lemma InterpUniv_Join n i (A B : PTm n) PA PB :
|
Lemma InterpUniv_Join n i (A B : PTm n) PA PB :
|
||||||
⟦ A ⟧ i ↘ PA ->
|
⟦ A ⟧ i ↘ PA ->
|
||||||
⟦ B ⟧ i ↘ PB ->
|
⟦ B ⟧ i ↘ PB ->
|
||||||
|
|
Loading…
Add table
Reference in a new issue