Side step the need for join subst
This commit is contained in:
parent
7cc6435ea3
commit
1997e8bc12
2 changed files with 39 additions and 1 deletions
|
@ -2139,4 +2139,16 @@ Module DJoin.
|
||||||
hauto lq:on rew:off use:REReds.bind_inv.
|
hauto lq:on rew:off use:REReds.bind_inv.
|
||||||
Qed.
|
Qed.
|
||||||
|
|
||||||
|
Lemma FromRRed0 n (a b : PTm n) :
|
||||||
|
RRed.R a b -> R a b.
|
||||||
|
Proof.
|
||||||
|
hauto lq:on ctrs:rtc use:RERed.FromBeta unfold:R.
|
||||||
|
Qed.
|
||||||
|
|
||||||
|
Lemma FromRRed1 n (a b : PTm n) :
|
||||||
|
RRed.R b a -> R a b.
|
||||||
|
Proof.
|
||||||
|
hauto lq:on ctrs:rtc use:RERed.FromBeta unfold:R.
|
||||||
|
Qed.
|
||||||
|
|
||||||
End DJoin.
|
End DJoin.
|
||||||
|
|
|
@ -324,7 +324,33 @@ Proof.
|
||||||
case : H h1 h => //=.
|
case : H h1 h => //=.
|
||||||
move => p0 A0 B0 h0 /DJoin.bind_inj.
|
move => p0 A0 B0 h0 /DJoin.bind_inj.
|
||||||
move => [? [hA hB]] _. subst.
|
move => [? [hA hB]] _. subst.
|
||||||
admit.
|
move /InterpUniv_Bind_inv : h0.
|
||||||
|
move => [PA0][PF0][hPA0][hTot0][hRes0 ?]. subst.
|
||||||
|
have ? : PA0 = PA by qauto l:on. subst.
|
||||||
|
have : forall a PB PB', PA a -> PF a PB -> PF0 a PB' -> PB = PB'.
|
||||||
|
move => a PB PB' ha hPB hPB'. apply : ihPF; eauto.
|
||||||
|
have hj0 : DJoin.R (PAbs B) (PAbs B0) by eauto using DJoin.AbsCong.
|
||||||
|
have {}hj0 : DJoin.R (PApp (PAbs B) a) (PApp (PAbs B0) a) by eauto using DJoin.AppCong, DJoin.refl.
|
||||||
|
have ? : SN (PApp (PAbs B) a)
|
||||||
|
by hauto lq:on rew:off use:N_Exp, N_β, adequacy.
|
||||||
|
have ? : SN (PApp (PAbs B0) a)
|
||||||
|
by hauto lq:on rew:off use:N_Exp, N_β, adequacy.
|
||||||
|
have : DJoin.R (PApp (PAbs B0) a) (subst_PTm (scons a VarPTm) B0)
|
||||||
|
by hauto lq:on ctrs:RRed.R use:DJoin.FromRRed0.
|
||||||
|
have : DJoin.R (subst_PTm (scons a VarPTm) B) (PApp (PAbs B) a)
|
||||||
|
by hauto lq:on ctrs:RRed.R use:DJoin.FromRRed1.
|
||||||
|
eauto using DJoin.transitive.
|
||||||
|
|
||||||
|
move => hI.
|
||||||
|
case : p0 => //=.
|
||||||
|
+ rewrite /ProdSpace.
|
||||||
|
extensionality b.
|
||||||
|
apply propositional_extensionality.
|
||||||
|
split.
|
||||||
|
move => hPF a PB.
|
||||||
|
|
||||||
|
move => a PB hPB.
|
||||||
|
|
||||||
- move => i j jlti ih B PB hPB.
|
- move => i j jlti ih B PB hPB.
|
||||||
have ? : SN B by hauto l:on use:adequacy.
|
have ? : SN B by hauto l:on use:adequacy.
|
||||||
move /InterpUniv_case : hPB => [H [/DJoin.FromRedSNs h [h1 h0]]].
|
move /InterpUniv_case : hPB => [H [/DJoin.FromRedSNs h [h1 h0]]].
|
||||||
|
|
Loading…
Add table
Reference in a new issue