Finish eta postponement
This commit is contained in:
parent
9134cfec8a
commit
51ac5ffbd6
1 changed files with 35 additions and 64 deletions
|
@ -1151,75 +1151,46 @@ Module UniqueNF (M : NoForbid) (MFacts : NoForbid_FactSig M).
|
||||||
move => [d [h0 h1]].
|
move => [d [h0 h1]].
|
||||||
exists (PApp d b0).
|
exists (PApp d b0).
|
||||||
hauto lq:on ctrs:ERed.R, rtc use:RReds.AppCong.
|
hauto lq:on ctrs:ERed.R, rtc use:RReds.AppCong.
|
||||||
+ move => a2 b0 b1 hb [*]. subst.
|
+ move => a2 b2 b3 hb2 [*]. subst.
|
||||||
sauto lq:on.
|
move {iha}.
|
||||||
- move => n a b0 b1 hb ihb Γ c A hu hu'.
|
have : P b0 by sfirstorder use:P_AppInv.
|
||||||
elim /RRed.inv : hu' => //=_.
|
move : ihb hb2; repeat move /[apply].
|
||||||
+ move => A0 a0 b2 [*]. subst.
|
hauto lq:on rew:off ctrs:ERed.R, rtc use:RReds.AppCong.
|
||||||
admit.
|
- move => n a0 a1 b0 b1 ha iha hb ihb c /P_PairInv [hP hP'].
|
||||||
+ sauto lq:on.
|
elim /RRed.inv => //=_;
|
||||||
+ move => a0 b2 b3 hb0 [*]. subst.
|
hauto lq:on rew:off ctrs:ERed.R, rtc use:RReds.PairCong.
|
||||||
have [? [? ]] : exists Γ A, @Wt n Γ b0 A by hauto lq:on inv:Wt.
|
- move => n p a0 a1 ha iha c /[dup] hP /P_ProjInv hP'.
|
||||||
move : ihb hb0. repeat move/[apply].
|
|
||||||
move => [d [h0 h1]].
|
|
||||||
exists (PApp a d).
|
|
||||||
split. admit.
|
|
||||||
sauto lq:on.
|
|
||||||
- move => n a0 a1 b ha iha Γ u A hu.
|
|
||||||
elim / RRed.inv => //= _.
|
elim / RRed.inv => //= _.
|
||||||
+ move => a2 a3 b0 h [*]. subst.
|
|
||||||
have [? [? ]] : exists Γ A, @Wt n Γ a0 A by hauto lq:on inv:Wt.
|
|
||||||
move : iha h. repeat move/[apply].
|
|
||||||
move => [d [h0 h1]].
|
|
||||||
exists (PPair d b).
|
|
||||||
split. admit.
|
|
||||||
sauto lq:on.
|
|
||||||
+ move => a2 b0 b1 h [*]. subst.
|
|
||||||
sauto lq:on.
|
|
||||||
- move => n a b0 b1 hb ihb Γ c A hu.
|
|
||||||
elim / RRed.inv => //=_.
|
|
||||||
move => a0 a1 b2 ha [*]. subst.
|
|
||||||
+ sauto lq:on.
|
|
||||||
+ move => a0 b2 b3 hb0 [*]. subst.
|
|
||||||
have [? [? ]] : exists Γ A, @Wt n Γ b0 A by hauto lq:on inv:Wt.
|
|
||||||
move : ihb hb0. repeat move/[apply].
|
|
||||||
move => [d [h0 h1]].
|
|
||||||
exists (PPair a d).
|
|
||||||
split. admit.
|
|
||||||
sauto lq:on.
|
|
||||||
- move => n p a0 a1 ha iha Γ u A hu.
|
|
||||||
elim / RRed.inv => //=_.
|
|
||||||
+ move => p0 a2 b0 [*]. subst.
|
+ move => p0 a2 b0 [*]. subst.
|
||||||
inversion ha; subst.
|
move : η_split hP' ha; repeat move/[apply].
|
||||||
* exfalso.
|
move => [a1 [h0 h1]].
|
||||||
move : hu. clear. hauto q:on inv:Wt.
|
inversion h1; subst.
|
||||||
* exists (match p with
|
* qauto l:on ctrs:rtc use:RReds.ProjCong, P_ProjAbs, P_RReds.
|
||||||
| PL => a2
|
* inversion H0; subst.
|
||||||
| PR => b0
|
exists (if p is PL then a1 else b1).
|
||||||
end).
|
split; last by scongruence use:NeERed.ToERed.
|
||||||
split. apply : rtc_l.
|
apply : relations.rtc_transitive.
|
||||||
|
apply RReds.ProjCong; eauto.
|
||||||
|
apply : rtc_l.
|
||||||
|
apply RRed.ProjCong.
|
||||||
|
apply RRed.PairCong0.
|
||||||
apply RRed.ProjPair.
|
apply RRed.ProjPair.
|
||||||
apply rtc_once. clear.
|
apply : rtc_l.
|
||||||
hauto lq:on use:RRed.ProjPair.
|
apply RRed.ProjCong.
|
||||||
admit.
|
apply RRed.PairCong1.
|
||||||
* eexists.
|
|
||||||
split. apply rtc_once.
|
|
||||||
apply RRed.ProjPair.
|
apply RRed.ProjPair.
|
||||||
admit.
|
apply rtc_once. apply RRed.ProjPair.
|
||||||
* eexists.
|
* exists (if p is PL then a3 else b1).
|
||||||
split. apply rtc_once.
|
split; last by hauto lq:on use:NeERed.ToERed.
|
||||||
|
apply : relations.rtc_transitive.
|
||||||
|
eauto using RReds.ProjCong.
|
||||||
|
apply rtc_once.
|
||||||
apply RRed.ProjPair.
|
apply RRed.ProjPair.
|
||||||
admit.
|
+ move => p0 a2 a3 h0 [*]. subst.
|
||||||
+ move => p0 a2 a3 ha0 [*]. subst.
|
move : iha hP' h0;repeat move/[apply].
|
||||||
have [? [? ]] : exists Γ A, @Wt n Γ a0 A by hauto lq:on inv:Wt.
|
hauto lq:on ctrs:rtc, ERed.R use:RReds.ProjCong.
|
||||||
move : iha ha0; repeat move/[apply].
|
- hauto lq:on inv:RRed.R.
|
||||||
move => [d [h0 h1]].
|
Qed.
|
||||||
exists (PProj p d).
|
|
||||||
split.
|
|
||||||
admit.
|
|
||||||
sauto lq:on.
|
|
||||||
Admitted.
|
|
||||||
|
|
||||||
|
|
||||||
End UniqueNF.
|
End UniqueNF.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue