Note: Changed the definition of extract!
This commit is contained in:
parent
3cb40ccb9e
commit
3de6dae199
1 changed files with 24 additions and 1 deletions
|
@ -894,13 +894,36 @@ Local Ltac extract_tac := rewrite -?depth_subst_bool;hauto use:depth_subst_bool.
|
||||||
|
|
||||||
#[tactic="extract_tac"]Equations extract {n} (a : Tm n) : Tm n by wf (depth_tm a) lt :=
|
#[tactic="extract_tac"]Equations extract {n} (a : Tm n) : Tm n by wf (depth_tm a) lt :=
|
||||||
extract (Pi A B) := Pi A B;
|
extract (Pi A B) := Pi A B;
|
||||||
extract (Abs a) := extract (subst_Tm (scons Bot VarTm) a);
|
extract (Abs a) := subst_Tm (scons Bot VarTm) (extract a)
|
||||||
|
|
||||||
extract (App a b) := extract a;
|
extract (App a b) := extract a;
|
||||||
extract (Pair a b) := extract a;
|
extract (Pair a b) := extract a;
|
||||||
extract (Proj p a) := extract a;
|
extract (Proj p a) := extract a;
|
||||||
extract Bot := Bot;
|
extract Bot := Bot;
|
||||||
extract (VarTm _) := Bot.
|
extract (VarTm _) := Bot.
|
||||||
|
|
||||||
|
(* Lemma extract_ren n m a (ξ : fin n -> fin m) : *)
|
||||||
|
(* extract (ren_Tm ξ a) = ren_Tm ξ (extract a). *)
|
||||||
|
(* Proof. *)
|
||||||
|
|
||||||
|
(* Lemma ren_extract' n m a b (ξ : fin n -> fin m) : *)
|
||||||
|
(* extract a = ren_Tm ξ b -> *)
|
||||||
|
(* exists a0, ren_Tm ξ a0 = a /\ extract a0 = b. *)
|
||||||
|
(* Proof. *)
|
||||||
|
(* move : n b ξ. *)
|
||||||
|
(* elim : m / a. *)
|
||||||
|
(* - move => n i m b ξ. simp extract. *)
|
||||||
|
(* case : b => //= _. *)
|
||||||
|
(* exists *)
|
||||||
|
|
||||||
|
Lemma ren_extract n m (a : Tm n) (ξ : fin n -> fin m) :
|
||||||
|
extract (ren_Tm ξ a) = ren_Tm ξ (extract a).
|
||||||
|
Proof.
|
||||||
|
move : m ξ. elim : n/a.
|
||||||
|
- sfirstorder.
|
||||||
|
- move => n a ih m ξ. simpl. simp extract.
|
||||||
|
(* Admitted. *)
|
||||||
|
|
||||||
Lemma tm_depth_ind (P : forall n, Tm n -> Prop) :
|
Lemma tm_depth_ind (P : forall n, Tm n -> Prop) :
|
||||||
(forall n (a : Tm n), (forall m (b : Tm m), depth_tm b < depth_tm a -> P m b) -> P n a) -> forall n a, P n a.
|
(forall n (a : Tm n), (forall m (b : Tm m), depth_tm b < depth_tm a -> P m b) -> P n a) -> forall n a, P n a.
|
||||||
move => ih.
|
move => ih.
|
||||||
|
|
Loading…
Add table
Reference in a new issue