Built with Alectryon, running Coq+SerAPI v8.16.0+0.16.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
(** This files contains metatheorems for the locally nameless variables that closely parallel those of LNgen. *)From Tealeaves.Backends.Common Require Export
Names AtomSet.From Tealeaves.Misc Require Export
NaturalNumbers.From Tealeaves.Classes Require Import
Kleisli.Theory.DecoratedTraversableMonad.From Tealeaves.Theory Require Import
DecoratedTraversableMonad.Import Coq.Init.Nat. (* Notation <? *)Import
List.ListNotations
Product.Notations
Monoid.Notations
Batch.Notations
Subset.Notations
Kleisli.Monad.Notations
Kleisli.Comonad.Notations
ContainerFunctor.Notations
DecoratedMonad.Notations
DecoratedContainerFunctor.Notations
DecoratedTraversableMonad.Notations
AtomSet.Notations.#[local] Generalizable VariablesT U.(** * Deriving All Other Typeclass Instances from a DTM *)(******************************************************************************)Import UsefulInstances.(** * Locally nameless variables *)(******************************************************************************)InductiveLN :=
| Fr: atom -> LN
| Bd: nat -> LN.
foralll1l2 : LN, {l1 = l2} + {l1 <> l2}
foralll1l2 : LN, {l1 = l2} + {l1 <> l2}
l1, l2: LN n, n0: atom
{n = n0} + {n <> n0}
l1, l2: LN n, n0: nat
{n = n0} + {n <> n0}
l1, l2: LN n, n0: atom
{n = n0} + {n <> n0}
compare values n and n0; auto.
l1, l2: LN n, n0: nat
{n = n0} + {n <> n0}
compare values n and n0; auto.Qed.#[export] InstanceEqDec_LN: EquivDec.EqDec LN eq := eq_dec_LN.(** [compare_to_atom] is an induction principle for leaves that splits the <<Fr x>> case into subcases <<x = y>> and <<x <> y>> for some user-specified atom <<y>>. *)
forall (x : atom) (l : LN) (P : LN -> Prop),
P (Fr x) ->
(foralla : atom, a <> x -> P (Fr a)) ->
(foralln : nat, P (Bd n)) -> P l
forall (x : atom) (l : LN) (P : LN -> Prop),
P (Fr x) ->
(foralla : atom, a <> x -> P (Fr a)) ->
(foralln : nat, P (Bd n)) -> P l
x: atom l: LN P: LN -> Prop case1: P (Fr x) case2: foralla : atom, a <> x -> P (Fr a) case3: foralln : nat, P (Bd n)
P l
x, n: atom P: LN -> Prop case1: P (Fr x) case2: foralla : atom, a <> x -> P (Fr a) case3: foralln : nat, P (Bd n)
P (Fr n)
x: atom n: nat P: LN -> Prop case1: P (Fr x) case2: foralla : atom, a <> x -> P (Fr a) case3: foralln : nat, P (Bd n)
P (Bd n)
x, n: atom P: LN -> Prop case1: P (Fr x) case2: foralla : atom, a <> x -> P (Fr a) case3: foralln : nat, P (Bd n)
P (Fr n)
x, n: atom P: LN -> Prop case1: P (Fr x) case2: foralla : atom, a <> x -> P (Fr a) case3: foralln : nat, P (Bd n) DESTR_NEQ: x <> n DESTR_NEQs: n <> x
P (Fr n)
auto.
x: atom n: nat P: LN -> Prop case1: P (Fr x) case2: foralla : atom, a <> x -> P (Fr a) case3: foralln : nat, P (Bd n)
P (Bd n)
auto.Qed.Tactic Notation"compare"constr(l) "to""atom"constr(x) :=
(induction l using (compare_to_atom x)).(** * Locally nameless operations *)(******************************************************************************)(** ** Localized operations *)(******************************************************************************)Sectionlocally_nameless_local_operations.Context
`{Return T}.#[local] Arguments ret (T)%function_scope {Return} {A}%type_scope _.Definitionfree_loc: LN -> list atom :=
funl => match l with
| Fr x => cons x List.nil
| _ => List.nil
end.Definitionsubst_loc (x: atom) (u: T LN): LN -> T LN :=
funl => match l with
| Fr y => if x == y then u else ret T (Fr y)
| Bd n => ret T (Bd n)
end.Definitionopen_loc (u: T LN): nat * LN -> T LN :=
funp => match p with
| (w, l) =>
match l with
| Fr x => ret T (Fr x)
| Bd n =>
match Nat.compare n w with
| Gt => ret T (Bd (n - 1))
| Eq => u
| Lt => ret T (Bd n)
endendend.Definitionis_opened: nat * LN -> Prop :=
funp =>
match p with
| (ctx, l) =>
match l with
| Fr y => False
| Bd n => n = ctx
endend.Definitionclose_loc (x: atom ): nat * LN -> LN :=
funp => match p with
| (w, l) =>
match l with
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Gt => Bd (S n)
| Eq => Bd (S n)
| Lt => Bd n
endendend.(** The argument <<n>> is appended the context---to define local closure we will take <<n = 0>>, but we can also consider more notions like ``local closure within a gap of 1 binder,'' which is useful for backend reasoning. **)Definitionlc_loc (gap: nat): nat * LN -> Prop :=
funp => match p with
| (w, l) =>
match l with
| Fr x => True
| Bd n => n < w + gap
endend.Definitionlcb_loc (gap: nat): nat * LN -> bool :=
funp => match p with
| (w, l) =>
match l with
| Fr x => true
| Bd n => n <? w + gap
endend.Definitionlevel_loc: nat * LN -> nat :=
funp => match p with
| (w, l) =>
match l with
| Fr x => 0
| Bd n => n + 1 - w
endend.Endlocally_nameless_local_operations.(** ** Lifted Operations *)(******************************************************************************)Sectionlocally_nameless_operations.Context
`{Return_T: Return T}
`{Map_U: Map U}
`{Bind_TU: Bind T U}
`{Traverse_U: Traverse U}
`{Mapd_U: Mapd nat U}
`{Bindt_TU: Bindt T U}
`{Bindd_U: Bindd nat T U}
`{Mapdt_U: Mapdt nat U}
`{Binddt_TU: Binddt nat T U}.Definitionopen (u: T LN): U LN -> U LN :=
bindd (open_loc u).Definitionclosex: U LN -> U LN :=
mapd (close_loc x).Definitionsubstx (u: T LN): U LN -> U LN :=
bind (subst_loc x u).Definitionfree: U LN -> list atom :=
mapReduce free_loc.DefinitionFV: U LN -> AtomSet.t :=
AtomSet.atoms ○ free.DefinitionLCnb (gap: nat): U LN -> bool :=
mapdReduce (lcb_loc gap).DefinitionLCb: U LN -> bool :=
LCnb 0.DefinitionLCn (gap: nat): U LN -> Prop :=
Forall_ctx (lc_loc gap).DefinitionLC: U LN -> Prop :=
LCn 0.Definitionlevel: U LN -> nat :=
mapdReduce (op := Monoid_op_max) (unit := Monoid_unit_max)
level_loc.Definitionscoped: U LN -> AtomSet.t -> Prop :=
funtγ => FV t ⊆ γ.Endlocally_nameless_operations.(** ** Operation Notations *)(******************************************************************************)ModuleOpNotations.Notation"t '{ x ~> u }" := (subst x u t) (at level35).Notation"t ' ( u )" := (open u t) (at level35, format"t ' ( u )" ).Notation"' [ x ] t" := (close x t) (at level35, format"' [ x ] t" ).EndOpNotations.Import OpNotations.Sectiontest_notations.Context
`{DecoratedTraversableMonad nat T}.Context
(t: T LN)
(u: T LN)
(x: atom)
(n: nat).
u '{ x ~> t}
: T LN
u '(t)
: T LN
'[x] u
: T LN
Endtest_notations.(** * Some Tactics *)(******************************************************************************)Create HintDb tea_local.Tactic Notation"unfold_monoid" :=
repeatunfold monoid_op, Monoid_op_plus,
monoid_unit, Monoid_unit_zero in *.Tactic Notation"unfold_lia" :=
unfold_monoid; lia.(** * Basic principles and lemmas *)(******************************************************************************)Sectionlocally_nameless_basic_principles.Import Notations.(* Context `{Return_T: Return T} `{Binddt_TT: Binddt nat T T} `{Binddt_TU: Binddt nat T U} `{Monad_inst: ! DecoratedTraversableMonad nat T} `{Module_inst: ! DecoratedTraversableRightPreModule nat T U (unit := Monoid_unit_zero) (op := Monoid_op_plus)}. *)Context
`{Return_T: Return T}
`{Map_T: Map T}
`{Bind_TT: Bind T T}
`{Traverse_T: Traverse T}
`{Mapd_T: Mapd nat T}
`{Bindt_TT: Bindt T T}
`{Bindd_T: Bindd nat T}
`{Mapdt_T: Mapdt nat T}
`{Binddt_TT: Binddt nat T T}
`{! Compat_Map_Binddt nat T T}
`{! Compat_Bind_Binddt nat T T}
`{! Compat_Traverse_Binddt nat T T}
`{! Compat_Mapd_Binddt nat T T}
`{! Compat_Bindt_Binddt nat T T}
`{! Compat_Bindd_Binddt nat T T}
`{! Compat_Mapdt_Binddt nat T T}.Context
`{Map_U: Map U}
`{Bind_TU: Bind T U}
`{Traverse_U: Traverse U}
`{Mapd_U: Mapd nat U}
`{Bindt_TU: Bindt T U}
`{Bindd_TU: Bindd nat T U}
`{Mapdt_U: Mapdt nat U}
`{Binddt_TU: Binddt nat T U}
`{! Compat_Map_Binddt nat T U}
`{! Compat_Bind_Binddt nat T U}
`{! Compat_Traverse_Binddt nat T U}
`{! Compat_Mapd_Binddt nat T U}
`{! Compat_Bindt_Binddt nat T U}
`{! Compat_Bindd_Binddt nat T U}
`{! Compat_Mapdt_Binddt nat T U}.Context
`{Monad_inst: ! DecoratedTraversableMonad nat T}
`{Module_inst: ! DecoratedTraversableRightPreModule nat T U
(unit := Monoid_unit_zero)
(op := Monoid_op_plus)}.Implicit Types (l: LN) (n: nat) (t: U LN) (x: atom).(** ** Local closure spec *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallgap : nat,
LCn gap =
(funt =>
forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallgap : nat,
LCn gap =
(funt =>
forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat
LCn gap =
(funt =>
forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LCn gap t =
(forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LCn gap t <->
(forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
Forall_ctx (lc_loc gap) t <->
(forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
(forall (e : nat) (a : LN),
(e, a) ∈d t -> lc_loc gap (e, a)) <->
(forall (w : nat) l, (w, l) ∈d t -> lc_loc gap (w, l))
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
LC =
(funt =>
forall (w : nat) l, (w, l) ∈d t -> lc_loc 0 (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
LC =
(funt =>
forall (w : nat) l, (w, l) ∈d t -> lc_loc 0 (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN
LC t =
(forall (w : nat) l, (w, l) ∈d t -> lc_loc 0 (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN
LCn 0 t =
(forall (w : nat) l, (w, l) ∈d t -> lc_loc 0 (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN
(forall (w : nat) l, (w, l) ∈d t -> lc_loc 0 (w, l)) =
(forall (w : nat) l, (w, l) ∈d t -> lc_loc 0 (w, l))
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gapgap'w : nat) l,
gap <= gap' -> lc_loc gap (w, l) -> lc_loc gap' (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gapgap'w : nat) l,
gap <= gap' -> lc_loc gap (w, l) -> lc_loc gap' (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gapgap'w : nat) l,
gap <= gap' ->
match l with
| Fr _ => True
| Bd n => n < w + gap
end ->
match l with
| Fr _ => True
| Bd n => n < w + gap'
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gapgap'w : nat) l,
gap <= gap' ->
match l with
| Fr _ => True
| Bd n => n < w + gap
end ->
match l with
| Fr _ => True
| Bd n => n < w + gap'
end
destruct l; lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gapgap' : nat) t,
gap <= gap' -> LCn gap t -> LCn gap' t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gapgap' : nat) t,
gap <= gap' -> LCn gap t -> LCn gap' t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap, gap': nat t: U LN Hineq: gap <= gap'
LCn gap t -> LCn gap' t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap, gap': nat t: U LN Hineq: gap <= gap' H: forall (w : nat) l,
(w, l) ∈d t -> lc_loc gap (w, l) w: nat l: LN H0: (w, l) ∈d t
lc_loc gap' (w, l)
apply (lc_loc_mono gap); auto.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (wn : nat),
(w, Bd n) ∈d t -> n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (wn : nat),
(w, Bd n) ∈d t -> n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t H0: n + 1 - w <= level t
n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
n + 1 - w <= level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
n + 1 - w <= level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
level_loc (w, Bd n) <= level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
level_loc (w, Bd n) <= mapdReduce level_loc t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
(w, Bd n) ∈d t
assumption.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt, LCn (level t) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt, LCn (level t) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN
LCn (level t) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN
forall (w : nat) l,
(w, l) ∈d t -> lc_loc (level t) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w: nat l: LN H: (w, l) ∈d t
lc_loc (level t) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w: nat l: LN H: (w, l) ∈d t
match l with
| Fr _ => True
| Bd n => n < w + level t
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w: nat n: atom H: (w, Fr n) ∈d t
True
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w: nat n: atom H: (w, Fr n) ∈d t
True
trivial.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
n < w + level t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN w, n: nat H: (w, Bd n) ∈d t
(w, Bd n) ∈d t
auto.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gap : nat) t, level t <= gap -> LCn gap t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gap : nat) t, level t <= gap -> LCn gap t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN H: level t <= gap
LCn gap t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN H: level t <= gap
level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN H: level t <= gap
LCn (level t) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN H: level t <= gap
LCn (level t) t
apply level2.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gap : nat) t, LCn gap t -> level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gap : nat) t, LCn gap t -> level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: LCn gap t
level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: Forall_ctx (lc_loc gap) t
level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: mapdReduce (lc_loc gap) t
level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: (mapReduce (lc_loc gap) ∘ toctxlist) t
level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: (mapReduce (lc_loc gap) ∘ toctxlist) t
mapdReduce level_loc t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: (mapReduce (lc_loc gap) ∘ toctxlist) t
(mapReduce level_loc ∘ toctxlist) t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: mapReduce (lc_loc gap) (toctxlist t)
mapReduce level_loc (toctxlist t) <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: mapReduce (lc_loc gap) []
mapReduce level_loc [] <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) hyp: mapReduce (lc_loc gap) (a :: e) IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
mapReduce level_loc (a :: e) <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: mapReduce (lc_loc gap) []
mapReduce level_loc [] <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN hyp: mapReduce (lc_loc gap) []
0 <= gap
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) hyp: mapReduce (lc_loc gap) (a :: e) IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
mapReduce level_loc (a :: e) <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) hyp: mapReduce (lc_loc gap) (a :: e) IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a ● mapReduce level_loc e <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) hyp: mapReduce_list (lc_loc gap) (a :: e) IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a ● mapReduce level_loc e <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) hyp: lc_loc gap a ● mapReduce_list (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a ● mapReduce level_loc e <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) hyp: lc_loc gap a ● mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a ● mapReduce level_loc e <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) H: lc_loc gap a H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a ● mapReduce level_loc e <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) H: lc_loc gap a H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) H: lc_loc gap a H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
mapReduce level_loc e <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) H: lc_loc gap a H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc a <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n: nat l: LN e: list (nat * LN) H: lc_loc gap (n, l) H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
level_loc (n, l) <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n: nat l: LN e: list (nat * LN) H: lc_loc gap (n, l) H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
match l with
| Fr _ => 0
| Bd n0 => n0 + 1 - n
end <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n: nat l: LN e: list (nat * LN) H: match l with
| Fr _ => True
| Bd n0 => n0 < n + gap
end H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
match l with
| Fr _ => 0
| Bd n0 => n0 + 1 - n
end <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n: nat n0: atom e: list (nat * LN) H: True H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
0 <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n, n0: nat e: list (nat * LN) H: n0 < n + gap H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
n0 + 1 - n <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n: nat n0: atom e: list (nat * LN) H: True H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
0 <= gap
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN n, n0: nat e: list (nat * LN) H: n0 < n + gap H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
n0 + 1 - n <= gap
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN a: nat * LN e: list (nat * LN) H: lc_loc gap a H0: mapReduce (lc_loc gap) e IHe: mapReduce (lc_loc gap) e ->
mapReduce level_loc e <= gap
mapReduce level_loc e <= gap
auto.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gap : nat) t, LCn gap t <-> level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (gap : nat) t, LCn gap t <-> level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LCn gap t <-> level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LCn gap t -> level t <= gap
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
level t <= gap -> LCn gap t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LCn gap t -> level t <= gap
apply level4.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
level t <= gap -> LCn gap t
apply level3.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
nat -> forallt, LC t <-> level t = 0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
nat -> forallt, LC t <-> level t = 0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LC t <-> level t = 0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
LCn 0 t <-> level t = 0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U gap: nat t: U LN
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (u1u2 : T LN),
(forall (w : nat) l,
(w, l) ∈d t ->
open_loc u1 (w, l) = open_loc u2 (w, l)) ->
t '(u1) = t '(u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (u1u2 : T LN),
(forall (w : nat) l,
(w, l) ∈d t ->
open_loc u1 (w, l) = open_loc u2 (w, l)) ->
t '(u1) = t '(u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u1, u2: T LN H: forall (w : nat) l,
(w, l) ∈d t ->
open_loc u1 (w, l) = open_loc u2 (w, l)
t '(u1) = t '(u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u1, u2: T LN H: forall (w : nat) l,
(w, l) ∈d t ->
open_loc u1 (w, l) = open_loc u2 (w, l)
bindd (open_loc u1) t = bindd (open_loc u2) t
nowapply bindd_respectful.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (u : T LN),
(forall (w : nat) l,
(w, l) ∈d t -> open_loc u (w, l) = ret l) ->
t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (u : T LN),
(forall (w : nat) l,
(w, l) ∈d t -> open_loc u (w, l) = ret l) ->
t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN H: forall (w : nat) l,
(w, l) ∈d t -> open_loc u (w, l) = ret l
t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN H: forall (w : nat) l,
(w, l) ∈d t -> open_loc u (w, l) = ret l
bindd (open_loc u) t = t
nowapply bindd_respectful_id.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll (u : T LN), ret l '(u) = open_loc u (0, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll (u : T LN), ret l '(u) = open_loc u (0, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN
ret l '(u) = open_loc u (0, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN
bindd (open_loc u) (ret l) = open_loc u (0, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN
(bindd (open_loc u) ∘ ret) l = open_loc u (0, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
(forall (w : nat) l,
(w, l) ∈d t ->
close_loc x (w, l) = close_loc y (w, l)) ->
'[x] t = '[y] t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
(forall (w : nat) l,
(w, l) ∈d t ->
close_loc x (w, l) = close_loc y (w, l)) ->
'[x] t = '[y] t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom H: forall (w : nat) l,
(w, l) ∈d t ->
close_loc x (w, l) = close_loc y (w, l)
'[x] t = '[y] t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom H: forall (w : nat) l,
(w, l) ∈d t ->
close_loc x (w, l) = close_loc y (w, l)
mapd (close_loc x) t = mapd (close_loc y) t
nowapply mapd_respectful.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx,
(forall (w : nat) l,
(w, l) ∈d t -> close_loc x (w, l) = l) -> '[x] t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx,
(forall (w : nat) l,
(w, l) ∈d t -> close_loc x (w, l) = l) -> '[x] t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom H: forall (w : nat) l,
(w, l) ∈d t -> close_loc x (w, l) = l
'[x] t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom H: forall (w : nat) l,
(w, l) ∈d t -> close_loc x (w, l) = l
mapd (close_loc x) t = t
nowapply mapd_respectful_id.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllx, '[x] ret l = ret (close_loc x (0, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllx, '[x] ret l = ret (close_loc x (0, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN x: atom
'[x] ret l = ret (close_loc x (0, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN x: atom
mapd (close_loc x) (ret l) = ret (close_loc x (0, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN x: atom
(mapd (close_loc x) ∘ ret) l =
ret (close_loc x (0, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN x: atom
(ret ∘ close_loc x ∘ ret) l = ret (close_loc x (0, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom) (u1u2 : T LN),
(foralll,
l ∈ t -> subst_loc x u1 l = subst_loc y u2 l) ->
t '{ x ~> u1} = t '{ y ~> u2}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom) (u1u2 : T LN),
(foralll,
l ∈ t -> subst_loc x u1 l = subst_loc y u2 l) ->
t '{ x ~> u1} = t '{ y ~> u2}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom u1, u2: T LN H: foralll,
l ∈ t -> subst_loc x u1 l = subst_loc y u2 l
t '{ x ~> u1} = t '{ y ~> u2}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom u1, u2: T LN H: foralll,
l ∈ t -> subst_loc x u1 l = subst_loc y u2 l
bind (subst_loc x u1) t = bind (subst_loc y u2) t
nowapply bind_respectful.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx (u : T LN),
(foralll, l ∈ t -> subst_loc x u l = ret l) ->
t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx (u : T LN),
(foralll, l ∈ t -> subst_loc x u l = ret l) ->
t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: foralll, l ∈ t -> subst_loc x u l = ret l
t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: foralll, l ∈ t -> subst_loc x u l = ret l
bind (subst_loc x u) t = t
nowapply mod_bind_respectful_id.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxl (u : T LN),
ret l '{ x ~> u} = subst_loc x u l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxl (u : T LN),
ret l '{ x ~> u} = subst_loc x u l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN u: T LN
ret l '{ x ~> u} = subst_loc x u l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN u: T LN
bind (subst_loc x u) (ret l) = subst_loc x u l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN u: T LN
(bind (subst_loc x u) ∘ ret) l = subst_loc x u l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN u: T LN
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallln (u : T LN) t,
(n, l) ∈d t '(u) <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ n = n1 ● n2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallln (u : T LN) t,
(n, l) ∈d t '(u) <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ n = n1 ● n2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN n: nat u: T LN t: U LN
(n, l) ∈d t '(u) <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ n = n1 ● n2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN n: nat u: T LN t: U LN
(n, l) ∈d bindd (open_loc u) t <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ n = n1 ● n2)
nowrewrite ind_bindd_iff'.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll (u : T LN) t,
l ∈ t '(u) <->
(existsn1l1,
(n1, l1) ∈d t /\ l ∈ open_loc u (n1, l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll (u : T LN) t,
l ∈ t '(u) <->
(existsn1l1,
(n1, l1) ∈d t /\ l ∈ open_loc u (n1, l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN t: U LN
l ∈ t '(u) <->
(existsn1l1,
(n1, l1) ∈d t /\ l ∈ open_loc u (n1, l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN t: U LN
l ∈ bindd (open_loc u) t <->
(existsn1l1,
(n1, l1) ∈d t /\ l ∈ open_loc u (n1, l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllnxt,
(n, l) ∈d '[x] t <->
(existsl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllnxt,
(n, l) ∈d '[x] t <->
(existsl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN n: nat x: atom t: U LN
(n, l) ∈d '[x] t <->
(existsl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN n: nat x: atom t: U LN
(n, l) ∈d mapd (close_loc x) t <->
(existsl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN n: nat x: atom t: U LN
(existsa : LN, (n, a) ∈d t /\ close_loc x (n, a) = l) <->
(existsl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
easy.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllxt,
l ∈ '[x] t <->
(existsnl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllxt,
l ∈ '[x] t <->
(existsnl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN x: atom t: U LN
l ∈ '[x] t <->
(existsnl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN x: atom t: U LN
l ∈ mapd (close_loc x) t <->
(existsnl1, (n, l1) ∈d t /\ close_loc x (n, l1) = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallnl (u : T LN) tx,
(n, l) ∈d t '{ x ~> u} <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d subst_loc x u l1 /\ n = n1 ● n2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallnl (u : T LN) tx,
(n, l) ∈d t '{ x ~> u} <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d subst_loc x u l1 /\ n = n1 ● n2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat l: LN u: T LN t: U LN x: atom
(n, l) ∈d t '{ x ~> u} <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d subst_loc x u l1 /\ n = n1 ● n2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat l: LN u: T LN t: U LN x: atom
(n, l) ∈d bind (subst_loc x u) t <->
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d subst_loc x u l1 /\ n = n1 ● n2)
nowrewrite ind_bind_iff'.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll (u : T LN) tx,
l ∈ t '{ x ~> u} <->
(existsl1, l1 ∈ t /\ l ∈ subst_loc x u l1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll (u : T LN) tx,
l ∈ t '{ x ~> u} <->
(existsl1, l1 ∈ t /\ l ∈ subst_loc x u l1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN t: U LN x: atom
l ∈ t '{ x ~> u} <->
(existsl1, l1 ∈ t /\ l ∈ subst_loc x u l1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN u: T LN t: U LN x: atom
l ∈ bind (subst_loc x u) t <->
(existsl1, l1 ∈ t /\ l ∈ subst_loc x u l1)
nowrewrite mod_in_bind_iff.Qed.Endlocally_nameless_basic_principles.(** * Utilities for reasoning at the leaves *)(******************************************************************************)Sectionlocally_nameless_utilities.Context
`{Return_T: Return T}
`{Map_T: Map T}
`{Bind_TT: Bind T T}
`{Traverse_T: Traverse T}
`{Mapd_T: Mapd nat T}
`{Bindt_TT: Bindt T T}
`{Bindd_T: Bindd nat T}
`{Mapdt_T: Mapdt nat T}
`{Binddt_TT: Binddt nat T T}
`{! Compat_Map_Binddt nat T T}
`{! Compat_Bind_Binddt nat T T}
`{! Compat_Traverse_Binddt nat T T}
`{! Compat_Mapd_Binddt nat T T}
`{! Compat_Bindt_Binddt nat T T}
`{! Compat_Bindd_Binddt nat T T}
`{! Compat_Mapdt_Binddt nat T T}.Context
`{Map_U: Map U}
`{Bind_TU: Bind T U}
`{Traverse_U: Traverse U}
`{Mapd_U: Mapd nat U}
`{Bindt_TU: Bindt T U}
`{Bindd_TU: Bindd nat T U}
`{Mapdt_U: Mapdt nat U}
`{Binddt_TU: Binddt nat T U}
`{! Compat_Map_Binddt nat T U}
`{! Compat_Bind_Binddt nat T U}
`{! Compat_Traverse_Binddt nat T U}
`{! Compat_Mapd_Binddt nat T U}
`{! Compat_Bindt_Binddt nat T U}
`{! Compat_Bindd_Binddt nat T U}
`{! Compat_Mapdt_Binddt nat T U}.Context
`{Monad_inst: ! DecoratedTraversableMonad nat T}
`{Module_inst: ! DecoratedTraversableRightPreModule nat T U
(unit := Monoid_unit_zero)
(op := Monoid_op_plus)}.Import Notations.(** ** (In)equalities between leaves *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxy : atom, Fr x = Fr y <-> x = y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxy : atom, Fr x = Fr y <-> x = y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom
Fr x = Fr y <-> x = y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom hyp: Fr x = Fr y
x = y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom hyp: x = y
Fr x = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom hyp: x = y
Fr x = Fr y
nowsubst.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxy : atom, Fr x <> Fr y <-> x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxy : atom, Fr x <> Fr y <-> x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom
Fr x <> Fr y <-> x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom hyp: x = y
Fr x = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom hyp: Fr x = Fr y
x = y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom hyp: Fr x = Fr y
x = y
nowinjection hyp.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxy : atom, x <> y -> Fr x <> Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxy : atom, x <> y -> Fr x <> Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom H: x <> y
Fr x <> Fr y
nowrewrite Fr_injective.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat x: atom
(Bd n = Fr x) = False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat x: atom
Bd n = Fr x -> False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat x: atom
False -> Bd n = Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat x: atom
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (x : atom), subst_loc x u (Fr x) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (x : atom), subst_loc x u (Fr x) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom
subst_loc x u (Fr x) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom
(if x == x then u else ret (Fr x)) = u
nowcompare values x and x.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (x : atom) (y : LN),
Fr x = y -> subst_loc x u y = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (x : atom) (y : LN),
Fr x = y -> subst_loc x u y = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom y: LN H: Fr x = y
subst_loc x u y = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom
subst_loc x u (Fr x) = u
nowrewrite subst_loc_eq.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (xy : atom),
x = y -> subst_loc x u (Fr y) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (xy : atom),
x = y -> subst_loc x u (Fr y) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom H: x = y
subst_loc x u (Fr y) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN y: atom
subst_loc y u (Fr y) = u
nowrewrite subst_loc_eq.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (xy : atom),
y <> x -> subst_loc x u (Fr y) = ret (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (xy : atom),
y <> x -> subst_loc x u (Fr y) = ret (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom H: y <> x
subst_loc x u (Fr y) = ret (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom H: y <> x
(if x == y then u else ret (Fr y)) = ret (Fr y)
nowcompare values x and y.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (x : atom) (n : nat),
subst_loc x u (Bd n) = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (x : atom) (n : nat),
subst_loc x u (Bd n) = ret (Bd n)
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (l : LN) (x : atom),
Fr x <> l -> subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (l : LN) (x : atom),
Fr x <> l -> subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN l: LN x: atom neq: Fr x <> l
subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN l: LN x: atom neq: Fr x <> l
match l with
| Fr y => if x == y then u else ret (Fr y)
| Bd n => ret (Bd n)
end = ret l
destruct l as [a|?]; [compare values x and a | reflexivity ].Qed.(** ** [open_loc] *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (wn : nat),
n < w -> open_loc u (w, Bd n) = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (wn : nat),
n < w -> open_loc u (w, Bd n) = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w, n: nat ineq: n < w
open_loc u (w, Bd n) = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w, n: nat ineq: n < w
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end = ret (Bd n)
compare naturals n and w.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (nw : nat),
n > w -> open_loc u (w, Bd n) = ret (Bd (n - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (nw : nat),
n > w -> open_loc u (w, Bd n) = ret (Bd (n - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN n, w: nat ineq: n > w
open_loc u (w, Bd n) = ret (Bd (n - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN n, w: nat ineq: n > w
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end = ret (Bd (n - 1))
compare naturals n and w.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (w : nat) (u : T LN), open_loc u (w, Bd w) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (w : nat) (u : T LN), open_loc u (w, Bd w) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat u: T LN
open_loc u (w, Bd w) = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat u: T LN
match w ?= w with
| Eq => u
| Lt => ret (Bd w)
| Gt => ret (Bd (w - 1))
end = u
compare naturals w and w.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (w : nat) (x : atom),
open_loc u (w, Fr x) = ret (Fr x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) (w : nat) (x : atom),
open_loc u (w, Fr x) = ret (Fr x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (w : nat) (xy : atom),
x <> y -> close_loc x (w, Fr y) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (w : nat) (xy : atom),
x <> y -> close_loc x (w, Fr y) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat x, y: atom H: x <> y
close_loc x (w, Fr y) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat x, y: atom H: x <> y
(if x == y then Bd w else Fr y) = Fr y
compare values x and y.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (w : nat) (x : atom),
close_loc x (w, Fr x) = Bd w
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (w : nat) (x : atom),
close_loc x (w, Fr x) = Bd w
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat x: atom
close_loc x (w, Fr x) = Bd w
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat x: atom
(if x == x then Bd w else Fr x) = Bd w
compare values x and x.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (x : atom) (wn : nat),
n < w -> close_loc x (w, Bd n) = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (x : atom) (wn : nat),
n < w -> close_loc x (w, Bd n) = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat H: n < w
close_loc x (w, Bd n) = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat H: n < w
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
end = Bd n
compare naturals n and w.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (x : atom) (wn : nat),
n >= w -> close_loc x (w, Bd n) = Bd (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (x : atom) (wn : nat),
n >= w -> close_loc x (w, Bd n) = Bd (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat H: n >= w
close_loc x (w, Bd n) = Bd (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat H: n >= w
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
end = Bd (S n)
compare naturals n and w.Qed.(** ** Local reasoning principles for LC *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallnm : nat, lc_loc n ⦿ m = lc_loc (n + m)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallnm : nat, lc_loc n ⦿ m = lc_loc (n + m)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m: nat
lc_loc n ⦿ m = lc_loc (n + m)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w: nat l: LN
(lc_loc n ⦿ m) (w, l) = lc_loc (n + m) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w: nat n0: atom
(lc_loc n ⦿ m) (w, Fr n0) = lc_loc (n + m) (w, Fr n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w, n0: nat
(lc_loc n ⦿ m) (w, Bd n0) = lc_loc (n + m) (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w: nat n0: atom
(lc_loc n ⦿ m) (w, Fr n0) = lc_loc (n + m) (w, Fr n0)
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w, n0: nat
(lc_loc n ⦿ m) (w, Bd n0) = lc_loc (n + m) (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w, n0: nat
(n0 < (m ● w) + n) = (n0 < w + (n + m))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, m, w, n0: nat
(n0 < m + w + n) = (n0 < w + (n + m))
propext; lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralln : nat, lc_loc n ⦿ 1 = lc_loc (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralln : nat, lc_loc n ⦿ 1 = lc_loc (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat
lc_loc n ⦿ 1 = lc_loc (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat
lc_loc (n + 1) = lc_loc (S n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat
(n + 1)%nat = S n
lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallnwb : nat, lc_loc n (w, Bd b) = (b < w + n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallnwb : nat, lc_loc n (w, Bd b) = (b < w + n)
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallwb : nat, lc_loc 0 (w, Bd b) = (b < w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallwb : nat, lc_loc 0 (w, Bd b) = (b < w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w, b: nat
lc_loc 0 (w, Bd b) = (b < w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w, b: nat
(b < w + 0) = (b < w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w, b: nat
(b < w + 0) = (b < w)
propext; lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallb : nat, lc_loc 0 (0, Bd b) = False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallb : nat, lc_loc 0 (0, Bd b) = False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U b: nat
lc_loc 0 (0, Bd b) = False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U b: nat
(b < 0) = False
propext; lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n, w: nat x: atom
lc_loc n (w, Fr x) = True
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (X : Type) (xy : X), (x <> y) = (y <> x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (X : Type) (xy : X), (x <> y) = (y <> x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type x, y: X
(x <> y) = (y <> x)
propext; intro hyp; contradict hyp; congruence.Qed.Endlocally_nameless_utilities.Create HintDb subst_local.#[export] Hint Rewrite
@subst_loc_eq: subst_local.#[export] Hint Rewrite
@subst_loc_eq_impl
@subst_loc_fr_eq_impl
@subst_loc_b
@subst_loc_neq
@subst_loc_fr_neq
usingsolve [auto]: subst_local.Ltacsimplify_subst_local :=
autorewrite with subst_local.#[export] Hint Rewrite @in_ret_iff @ind_ret_iff
usingtypeclasses eauto: tea_local.#[export] Hint Rewrite Fr_injective Fr_injective_not_iff Bd_neq_Fr: tea_local.#[export] Hint Resolve Fr_injective_not: tea_local.#[export] Hint Rewrite
@subst_loc_eq (*@subst_in_ret*)usingtypeclasses eauto: tea_local.#[export] Hint Rewrite
@subst_loc_neq @subst_loc_b @subst_loc_fr_neq (*@subst_in_ret_neq*)usingfirst [ typeclasses eauto | auto ]: tea_local.#[export] Hint Rewrite
@open_loc_lt @open_loc_gt
usingfirst [ typeclasses eauto | auto ]: tea_local.#[export] Hint Rewrite
@open_loc_eq @open_loc_atom
usingtypeclasses eauto: tea_local.Tactic Notation"simpl_local" := (autorewrite* with tea_local).Ltacsimplify_lc_loc :=
match goal with
| |- context[lc_loc ?n ⦿ 1] =>
rewrite lc_loc_S
| |- context[lc_loc ?n ⦿ ?m] =>
rewrite lc_loc_preincr
| |- context[lc_loc ?n (?w, Fr ?x)] =>
rewrite lc_loc_Fr
| |- context[lc_loc 0 (0, Bd ?b)] =>
rewrite lc_loc_00Bd
| |- context[lc_loc 0 (?w, Bd ?b)] =>
rewrite lc_loc_0Bd
| |- context[lc_loc ?n (?w, Bd ?b)] =>
rewrite lc_loc_nBd
end.(** * Free variables *)(******************************************************************************)Sectionlocally_nameless_free_variables.Import Notations.Context
`{Return_T: Return T}
`{Map_T: Map T}
`{Bind_TT: Bind T T}
`{Traverse_T: Traverse T}
`{Mapd_T: Mapd nat T}
`{Bindt_TT: Bindt T T}
`{Bindd_T: Bindd nat T}
`{Mapdt_T: Mapdt nat T}
`{Binddt_TT: Binddt nat T T}
`{! Compat_Map_Binddt nat T T}
`{! Compat_Bind_Binddt nat T T}
`{! Compat_Traverse_Binddt nat T T}
`{! Compat_Mapd_Binddt nat T T}
`{! Compat_Bindt_Binddt nat T T}
`{! Compat_Bindd_Binddt nat T T}
`{! Compat_Mapdt_Binddt nat T T}.Context
`{Map_U: Map U}
`{Bind_TU: Bind T U}
`{Traverse_U: Traverse U}
`{Mapd_U: Mapd nat U}
`{Bindt_TU: Bindt T U}
`{Bindd_TU: Bindd nat T U}
`{Mapdt_U: Mapdt nat U}
`{Binddt_TU: Binddt nat T U}
`{! Compat_Map_Binddt nat T U}
`{! Compat_Bind_Binddt nat T U}
`{! Compat_Traverse_Binddt nat T U}
`{! Compat_Mapd_Binddt nat T U}
`{! Compat_Bindt_Binddt nat T U}
`{! Compat_Bindd_Binddt nat T U}
`{! Compat_Mapdt_Binddt nat T U}.Context
`{Monad_inst: ! DecoratedTraversableMonad nat T}
`{Module_inst: ! DecoratedTraversableRightPreModule nat T U
(unit := Monoid_unit_zero)
(op := Monoid_op_plus)}.Implicit Types (l: LN) (n: nat) (t: U LN) (x: atom).(** ** Free variables *)(******************************************************************************)(** *** Specifications for [free] and [FV] *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxl, x ∈ free_loc l = (Fr x = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxl, x ∈ free_loc l = (Fr x = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN
x ∈ free_loc l = (Fr x = l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
x ∈ free_loc (Fr n) = (Fr x = Fr n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
x ∈ free_loc (Bd n) = (Fr x = Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
x ∈ free_loc (Fr n) = (Fr x = Fr n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
(n = x \/ False) = (Fr x = Fr n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
n = x \/ False -> Fr x = Fr n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
Fr x = Fr n -> n = x \/ False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
n = x \/ False -> Fr x = Fr n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom hyp: n = x
Fr x = Fr n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom hyp: False
Fr x = Fr n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom hyp: n = x
Fr x = Fr n
nowsubst.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom hyp: False
Fr x = Fr n
contradiction.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom
Fr x = Fr n -> n = x \/ False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom H: Fr x = Fr n H1: x = n
n = n \/ False
nowleft.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
x ∈ free_loc (Bd n) = (Fr x = Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
False = (Fr x = Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
False -> Fr x = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
Fr x = Bd n -> False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
False -> Fr x = Bd n
inversion1.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat
Fr x = Bd n -> False
inversion1.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, x ∈ free t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, x ∈ free t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
x ∈ free t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
x ∈ mapReduce free_loc t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
(element_of x ∘ mapReduce free_loc) t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
mapReduce (element_of x ∘ free_loc) t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
mapReduce (element_of x ∘ free_loc) t =
mapReduce {{Fr x}} t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
element_of x ∘ free_loc = {{Fr x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom l: LN
(element_of x ∘ free_loc) l = {{Fr x}} l
apply in_free_iff_local.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, x ∈ free t <-> x `in` FV t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, x ∈ free t <-> x `in` FV t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
x ∈ free t <-> x `in` FV t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
x ∈ free t <-> x `in` atoms (free t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
x ∈ free t <-> x ∈ free t
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (t : T LN) x, x ∈ free t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (t : T LN) x, x ∈ free t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom
x ∈ free t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom
x ∈ mapReduce free_loc t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom
(element_of x ∘ mapReduce free_loc) t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom
mapReduce (element_of x ∘ free_loc) t = Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom
mapReduce (element_of x ∘ free_loc) t =
mapReduce {{Fr x}} t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom
element_of x ∘ free_loc = {{Fr x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom l: LN
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) tx,
x ∈ free (t '(u)) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ x ∈ free (open_loc u (w, l1)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) tx,
x ∈ free (t '(u)) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ x ∈ free (open_loc u (w, l1)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom
x ∈ free (t '(u)) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ x ∈ free (open_loc u (w, l1)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom
Fr x ∈ t '(u) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ x ∈ free (open_loc u (w, l1)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom
Fr x ∈ t '(u) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ Fr x ∈ open_loc u (w, l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
y ∈ free ('[x] t) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
y ∈ free ('[x] t) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
y ∈ free ('[x] t) <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
Fr y ∈ '[x] t <->
(exists (w : nat) l1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) t (xy : atom),
y ∈ free (t '{ x ~> u}) <->
(existsl1, l1 ∈ t /\ y ∈ free (subst_loc x u l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (u : T LN) t (xy : atom),
y ∈ free (t '{ x ~> u}) <->
(existsl1, l1 ∈ t /\ y ∈ free (subst_loc x u l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom
y ∈ free (t '{ x ~> u}) <->
(existsl1, l1 ∈ t /\ y ∈ free (subst_loc x u l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom
Fr y ∈ t '{ x ~> u} <->
(existsl1, l1 ∈ t /\ y ∈ free (subst_loc x u l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom
Fr y ∈ t '{ x ~> u} <->
(existsl1, l1 ∈ t /\ Fr y ∈ subst_loc x u l1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxlt, ~ x ∈ free t -> l ∈ t -> Fr x <> l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxlt, ~ x ∈ free t -> l ∈ t -> Fr x <> l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN hyp1: ~ x ∈ free t hyp2: l ∈ t
Fr x <> l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN hyp1: ~ Fr x ∈ t hyp2: l ∈ t
Fr x <> l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom t: U LN hyp1: ~ Fr x ∈ t hyp2: Fr n ∈ t
Fr x <> Fr n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat t: U LN hyp1: ~ Fr x ∈ t hyp2: Bd n ∈ t
Fr x <> Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom t: U LN hyp1: ~ Fr x ∈ t hyp2: Fr n ∈ t
Fr x <> Fr n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, n: atom t: U LN hyp1: ~ Fr x ∈ t hyp2: Fr n ∈ t H: Fr x = Fr n
x = n -> False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: atom t: U LN hyp1: ~ Fr n ∈ t hyp2: Fr n ∈ t H: Fr n = Fr n
False
contradiction.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom n: nat t: U LN hyp1: ~ Fr x ∈ t hyp2: Bd n ∈ t
Fr x <> Bd n
discriminate.Qed.Endlocally_nameless_free_variables.(** * Locally nameless metatheory *)(******************************************************************************)Sectionlocally_nameless_metatheory.Context
`{Return_T: Return T}
`{Map_T: Map T}
`{Bind_TT: Bind T T}
`{Traverse_T: Traverse T}
`{Mapd_T: Mapd nat T}
`{Bindt_TT: Bindt T T}
`{Bindd_T: Bindd nat T}
`{Mapdt_T: Mapdt nat T}
`{Binddt_TT: Binddt nat T T}
`{! Compat_Map_Binddt nat T T}
`{! Compat_Bind_Binddt nat T T}
`{! Compat_Traverse_Binddt nat T T}
`{! Compat_Mapd_Binddt nat T T}
`{! Compat_Bindt_Binddt nat T T}
`{! Compat_Bindd_Binddt nat T T}
`{! Compat_Mapdt_Binddt nat T T}.Context
`{Map_U: Map U}
`{Bind_TU: Bind T U}
`{Traverse_U: Traverse U}
`{Mapd_U: Mapd nat U}
`{Bindt_TU: Bindt T U}
`{Bindd_TU: Bindd nat T U}
`{Mapdt_U: Mapdt nat U}
`{Binddt_TU: Binddt nat T U}
`{! Compat_Map_Binddt nat T U}
`{! Compat_Bind_Binddt nat T U}
`{! Compat_Traverse_Binddt nat T U}
`{! Compat_Mapd_Binddt nat T U}
`{! Compat_Bindt_Binddt nat T U}
`{! Compat_Bindd_Binddt nat T U}
`{! Compat_Mapdt_Binddt nat T U}.Context
`{Monad_inst: ! DecoratedTraversableMonad nat T}
`{Module_inst: ! DecoratedTraversableRightPreModule nat T U
(unit := Monoid_unit_zero)
(op := Monoid_op_plus)}.Open Scope set_scope.Implicit Types
(l: LN) (p: LN)
(w: nat) (n: nat)
(t: U LN) (u: T LN)
(x: atom).(** ** Occurrence analysis: substitution with contexts *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllwpux,
(w, p) ∈d subst_loc x u l <->
l <> Fr x /\ w = Ƶ /\ l = p \/ l = Fr x /\ (w, p) ∈d u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllwpux,
(w, p) ∈d subst_loc x u l <->
l <> Fr x /\ w = Ƶ /\ l = p \/ l = Fr x /\ (w, p) ∈d u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN w: nat p: LN u: T LN x: atom
(w, p) ∈d subst_loc x u l <->
l <> Fr x /\ w = Ƶ /\ l = p \/ l = Fr x /\ (w, p) ∈d u
compare l to atom x; simpl_local; intuition.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallwtulx,
(w, l) ∈d t '{ x ~> u} <->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallwtulx,
(w, l) ∈d t '{ x ~> u} <->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(w, l) ∈d t '{ x ~> u} <->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d subst_loc x u l1 /\ w = n1 ● n2) <->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2) <->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2) ->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2) ->
existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\
w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2) ->
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN conditions: (l', n2) ∈d t /\
(n2 <> Fr x /\ n1 = Ƶ /\ n2 = l \/
n2 = Fr x /\ (n1, l) ∈d u) /\
w = l' ● n1
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN c1: (l', n2) ∈d t c2: n2 <> Fr x /\ n1 = Ƶ /\ n2 = l
(l' ● n1, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\
(w2, l) ∈d u /\ l' ● n1 = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN c1: (l', n2) ∈d t c2: n2 = Fr x /\ (n1, l) ∈d u
(l' ● n1, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\
(w2, l) ∈d u /\ l' ● n1 = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN c1: (l', n2) ∈d t c2: n2 <> Fr x /\ n1 = Ƶ /\ n2 = l
(l' ● n1, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\
(w2, l) ∈d u /\ l' ● n1 = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN c1: (l', n2) ∈d t c2: n2 <> Fr x /\ n1 = Ƶ /\ n2 = l
(l' ● n1, l) ∈d t /\ l <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l': nat H: l <> Fr x c1: (l', l) ∈d t
(l' ● Ƶ, l) ∈d t /\ l <> Fr x
nowrewrite monoid_id_r.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN c1: (l', n2) ∈d t c2: n2 = Fr x /\ (n1, l) ∈d u
(l' ● n1, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\
(w2, l) ∈d u /\ l' ● n1 = w1 ● w2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat n2: LN c1: (l', n2) ∈d t c2: n2 = Fr x /\ (n1, l) ∈d u
existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ l' ● n1 = w1 ● w2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom l', n1: nat c1: (l', Fr x) ∈d t H0: (n1, l) ∈d u
existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ l' ● n1 = w1 ● w2
eauto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom
(w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\ (w2, l) ∈d u /\ w = w1 ● w2) ->
existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom H: (w, l) ∈d t H0: l <> Fr x
existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom n1, n2: nat H: (n1, Fr x) ∈d t H0: (n2, l) ∈d u H1: w = n1 ● n2
existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\
w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom H: (w, l) ∈d t H0: l <> Fr x
existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom H: (w, l) ∈d t H0: l <> Fr x
(w, l) ∈d t /\
(l <> Fr x /\ Ƶ = Ƶ /\ l = l \/
l = Fr x /\ (Ƶ, l) ∈d u) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom H: (w, l) ∈d t H0: l <> Fr x
(w, l) ∈d t /\
(l <> Fr x /\ Ƶ = Ƶ /\ l = l \/
l = Fr x /\ (Ƶ, l) ∈d u) /\ w = w
splits; auto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom n1, n2: nat H: (n1, Fr x) ∈d t H0: (n2, l) ∈d u H1: w = n1 ● n2
existsn1n2l1,
(n1, l1) ∈d t /\
(l1 <> Fr x /\ n2 = Ƶ /\ l1 = l \/
l1 = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN u: T LN l: LN x: atom n1, n2: nat H: (n1, Fr x) ∈d t H0: (n2, l) ∈d u H1: w = n1 ● n2
(n1, Fr x) ∈d t /\
(Fr x <> Fr x /\ n2 = Ƶ /\ Fr x = l \/
Fr x = Fr x /\ (n2, l) ∈d u) /\ w = n1 ● n2
splits; auto.Qed.(** ** Occurrence analysis: substitution without contexts *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllpux,
p ∈ subst_loc x u l <->
l <> Fr x /\ l = p \/ l = Fr x /\ p ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralllpux,
p ∈ subst_loc x u l <->
l <> Fr x /\ l = p \/ l = Fr x /\ p ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l, p: LN u: T LN x: atom
p ∈ subst_loc x u l <->
l <> Fr x /\ l = p \/ l = Fr x /\ p ∈ u
compare l to atom x; autorewrite* with tea_local; intuition.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltulx,
l ∈ t '{ x ~> u} <->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltulx,
l ∈ t '{ x ~> u} <->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
l ∈ t '{ x ~> u} <->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
(existsl1, l1 ∈ t /\ l ∈ subst_loc x u l1) <->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
(existsl1,
l1 ∈ t /\
(l1 <> Fr x /\ l1 = l \/ l1 = Fr x /\ l ∈ u)) <->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
(existsl1,
l1 ∈ t /\
(l1 <> Fr x /\ l1 = l \/ l1 = Fr x /\ l ∈ u)) ->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u ->
existsl1,
l1 ∈ t /\
(l1 <> Fr x /\ l1 = l \/ l1 = Fr x /\ l ∈ u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
(existsl1,
l1 ∈ t /\
(l1 <> Fr x /\ l1 = l \/ l1 = Fr x /\ l ∈ u)) ->
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom x0: LN H: x0 ∈ t in_sub: x0 <> Fr x /\ x0 = l \/ x0 = Fr x /\ l ∈ u
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
destruct in_sub as [[? heq] | [heq ?]]; subst...
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom
l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u ->
existsl1,
l1 ∈ t /\
(l1 <> Fr x /\ l1 = l \/ l1 = Fr x /\ l ∈ u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
y ∈ free (t '{ x ~> u}) <->
y ∈ free t /\ y <> x \/ x ∈ free t /\ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
y ∈ free (t '{ x ~> u}) <->
y ∈ free t /\ y <> x \/ x ∈ free t /\ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
y ∈ free (t '{ x ~> u}) <->
y ∈ free t /\ y <> x \/ x ∈ free t /\ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
Fr y ∈ t '{ x ~> u} <->
Fr y ∈ t /\ y <> x \/ Fr x ∈ t /\ Fr y ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
Fr y ∈ t /\ Fr y <> Fr x \/ Fr x ∈ t /\ Fr y ∈ u <->
Fr y ∈ t /\ y <> x \/ Fr x ∈ t /\ Fr y ∈ u
now simpl_local.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux (y : AtomSet.elt),
y `in` FV (t '{ x ~> u}) <->
y `in` FV t /\ y <> x \/ x `in` FV t /\ y `in` FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux (y : AtomSet.elt),
y `in` FV (t '{ x ~> u}) <->
y `in` FV t /\ y <> x \/ x `in` FV t /\ y `in` FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom y: AtomSet.elt
y `in` FV (t '{ x ~> u}) <->
y `in` FV t /\ y <> x \/ x `in` FV t /\ y `in` FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom y: AtomSet.elt
y ∈ free (t '{ x ~> u}) <->
y ∈ free t /\ y <> x \/ x ∈ free t /\ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom y: AtomSet.elt
y ∈ free t /\ y <> x \/ x ∈ free t /\ y ∈ free u <->
y ∈ free t /\ y <> x \/ x ∈ free t /\ y ∈ free u
reflexivity.Qed.(** ** Upper and lower bounds for leaves after substitution *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltulx,
l ∈ t '{ x ~> u} -> l ∈ t /\ l <> Fr x \/ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltulx,
l ∈ t '{ x ~> u} -> l ∈ t /\ l <> Fr x \/ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom hin: l ∈ t '{ x ~> u}
l ∈ t /\ l <> Fr x \/ l ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN l: LN x: atom hin: l ∈ t /\ l <> Fr x \/ Fr x ∈ t /\ l ∈ u
l ∈ t /\ l <> Fr x \/ l ∈ u
intuition.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
y ∈ free (t '{ x ~> u}) ->
y ∈ free t /\ y <> x \/ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
y ∈ free (t '{ x ~> u}) ->
y ∈ free t /\ y <> x \/ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
y ∈ free (t '{ x ~> u}) ->
y ∈ free t /\ y <> x \/ y ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
Fr y ∈ t '{ x ~> u} -> Fr y ∈ t /\ y <> x \/ Fr y ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
Fr y ∈ t /\ Fr y <> Fr x \/ Fr x ∈ t /\ Fr y ∈ u ->
Fr y ∈ t /\ y <> x \/ Fr y ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom
Fr y ∈ t /\ y <> x \/ Fr x ∈ t /\ Fr y ∈ u ->
Fr y ∈ t /\ y <> x \/ Fr y ∈ u
tauto.Qed.(* LNgen 4: fv-subst-upper *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux, FV (t '{ x ~> u}) ⊆ FV t \\ {{x}} ∪ FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux, FV (t '{ x ~> u}) ⊆ FV t \\ {{x}} ∪ FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN y: T LN x: atom a: AtomSet.elt
a `in` FV (t '{ x ~> y}) ->
a `in` (FV t \\ {{x}} ∪ FV y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN y: T LN x: atom a: AtomSet.elt
a `in` FV (t '{ x ~> y}) ->
a `in` FV t /\ a <> x \/ a `in` FV y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN y: T LN x: atom a: AtomSet.elt
a ∈ free (t '{ x ~> y}) ->
a ∈ free t /\ a <> x \/ a ∈ free y
apply in_free_subst_upper.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltulx, l ∈ t /\ l <> Fr x -> l ∈ t '{ x ~> u}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltulx, l ∈ t /\ l <> Fr x -> l ∈ t '{ x ~> u}
intros; rewrite in_subst_iff'...Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
y ∈ free t -> y <> x -> y ∈ free (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
y ∈ free t -> y <> x -> y ∈ free (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu (xy : atom),
Fr y ∈ t -> y <> x -> Fr y ∈ t '{ x ~> u}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x, y: atom H: Fr y ∈ t H0: y <> x
Fr y ∈ t '{ x ~> u}
apply in_subst_lower; now simpl_local.Qed.(* LNgen 5: fv-subst-lower *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (t : T LN) (u : U LN) x,
FV u \\ {{x}} ⊆ FV (u '{ x ~> t})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (t : T LN) (u : U LN) x,
FV u \\ {{x}} ⊆ FV (u '{ x ~> t})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN u: U LN x: atom
FV u \\ {{x}} ⊆ FV (u '{ x ~> t})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN u: U LN x: atom a: AtomSet.elt
a `in` (FV u \\ {{x}}) -> a `in` FV (u '{ x ~> t})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN u: U LN x: atom a: AtomSet.elt
a `in` FV u /\ a <> x -> a `in` FV (u '{ x ~> t})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN u: U LN x: atom a: AtomSet.elt
a ∈ free u /\ a <> x -> a ∈ free (u '{ x ~> t})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN u: U LN x: atom a: AtomSet.elt H: a ∈ free u H0: a <> x
a ∈ free (u '{ x ~> t})
nowapply in_free_subst_lower.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux (γ1γ2 : AtomSet.t),
scoped t γ1 ->
scoped u γ2 ->
scoped (t '{ x ~> u}) (γ1 \\ {{x}} ∪ γ2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux (γ1γ2 : AtomSet.t),
scoped t γ1 ->
scoped u γ2 ->
scoped (t '{ x ~> u}) (γ1 \\ {{x}} ∪ γ2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom γ1, γ2: AtomSet.t St: scoped t γ1 Su: scoped u γ2
scoped (t '{ x ~> u}) (γ1 \\ {{x}} ∪ γ2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom γ1, γ2: AtomSet.t St: FV t ⊆ γ1 Su: FV u ⊆ γ2
FV (t '{ x ~> u}) ⊆ γ1 \\ {{x}} ∪ γ2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom γ1, γ2: AtomSet.t St: FV t ⊆ γ1 Su: FV u ⊆ γ2
FV (t '{ x ~> u}) ⊆ ?y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom γ1, γ2: AtomSet.t St: FV t ⊆ γ1 Su: FV u ⊆ γ2
?y ⊆ γ1 \\ {{x}} ∪ γ2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom γ1, γ2: AtomSet.t St: FV t ⊆ γ1 Su: FV u ⊆ γ2
FV t \\ {{x}} ∪ FV u ⊆ γ1 \\ {{x}} ∪ γ2
fsetdec.Qed.(** ** Substitution of fresh variables *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltxu, ~ x ∈ free t -> t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltxu, ~ x ∈ free t -> t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: ~ x ∈ free t
t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: ~ x ∈ free t
foralll, l ∈ t -> subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: ~ x ∈ free t l: LN H0: l ∈ t
subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: ~ x ∈ free t l: LN H0: l ∈ t H1: Fr x <> l
subst_loc x u l = ret l
now simpl_local.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (t : T LN) xu,
~ x ∈ free t -> t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (t : T LN) xu,
~ x ∈ free t -> t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom u: T LN H: ~ x ∈ free t
t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom u: T LN H: ~ x ∈ free t
foralll, l ∈ t -> subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom u: T LN H: ~ x ∈ free t l: LN H0: l ∈ t
subst_loc x u l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: T LN x: atom u: T LN H: ~ x ∈ free t l: LN H0: l ∈ t H1: Fr x <> l
subst_loc x u l = ret l
now simpl_local.Qed.(* LNgen 7: subst-fresh-eq *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltxu, x `notin` FV t -> t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltxu, x `notin` FV t -> t '{ x ~> u} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltxu,
x `notin` FV t -> FV (t '{ x ~> u}) = FV t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltxu,
x `notin` FV t -> FV (t '{ x ~> u}) = FV t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom u: T LN H: x `notin` FV t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu1u2x1x2,
~ x1 ∈ free u2 ->
x1 <> x2 ->
subst_loc x2 u2 ⋆ subst_loc x1 u1 =
subst_loc x1 (u1 '{ x2 ~> u2}) ⋆ subst_loc x2 u2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu1u2x1x2,
~ x1 ∈ free u2 ->
x1 <> x2 ->
subst_loc x2 u2 ⋆ subst_loc x1 u1 =
subst_loc x1 (u1 '{ x2 ~> u2}) ⋆ subst_loc x2 u2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
subst_loc x2 u2 ⋆ subst_loc x1 u1 =
subst_loc x1 (u1 '{ x2 ~> u2}) ⋆ subst_loc x2 u2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 l: LN
(subst_loc x2 u2 ⋆ subst_loc x1 u1) l =
(subst_loc x1 (u1 '{ x2 ~> u2}) ⋆ subst_loc x2 u2) l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 l: LN
(subst_loc x2 u2 ⋆ subst_loc x1 u1) l =
(subst_loc x1 (u1 '{ x2 ~> u2}) ⋆ subst_loc x2 u2) l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 l: LN
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 l: LN
subst_loc x1 u1 l '{ x2 ~> u2} =
subst_loc x2 u2 l '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1
subst_loc x1 u1 (Fr a) '{ x2 ~> u2} =
subst_loc x2 u2 (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
u1 '{ x2 ~> u2} = u1 '{ x2 ~> u2}
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1
subst_loc x1 u1 (Fr a) '{ x2 ~> u2} =
subst_loc x2 u2 (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1
ret (Fr a) '{ x2 ~> u2} =
subst_loc x2 u2 (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1: atom H: ~ x1 ∈ free u2 a: atom H0: x1 <> a H1: a <> x1 DESTR_EQs: a = a
ret (Fr a) '{ a ~> u2} =
subst_loc a u2 (Fr a) '{ x1 ~> u1 '{ a ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1 DESTR_NEQ: x2 <> a DESTR_NEQs: a <> x2
ret (Fr a) '{ x2 ~> u2} =
subst_loc x2 u2 (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1: atom H: ~ x1 ∈ free u2 a: atom H0: x1 <> a H1: a <> x1 DESTR_EQs: a = a
ret (Fr a) '{ a ~> u2} =
subst_loc a u2 (Fr a) '{ x1 ~> u1 '{ a ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1: atom H: ~ x1 ∈ free u2 a: atom H0: x1 <> a H1: a <> x1 DESTR_EQs: a = a
subst_loc a u2 (Fr a) =
subst_loc a u2 (Fr a) '{ x1 ~> u1 '{ a ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1: atom H: ~ x1 ∈ free u2 a: atom H0: x1 <> a H1: a <> x1 DESTR_EQs: a = a
u2 = u2 '{ x1 ~> u1 '{ a ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1: atom H: ~ x1 ∈ free u2 a: atom H0: x1 <> a H1: a <> x1 DESTR_EQs: a = a
u2 = u2
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1 DESTR_NEQ: x2 <> a DESTR_NEQs: a <> x2
ret (Fr a) '{ x2 ~> u2} =
subst_loc x2 u2 (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1 DESTR_NEQ: x2 <> a DESTR_NEQs: a <> x2
subst_loc x2 u2 (Fr a) =
subst_loc x2 u2 (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1 DESTR_NEQ: x2 <> a DESTR_NEQs: a <> x2
ret (Fr a) = ret (Fr a) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1 DESTR_NEQ: x2 <> a DESTR_NEQs: a <> x2
ret (Fr a) = subst_loc x1 (u1 '{ x2 ~> u2}) (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 a: atom H1: a <> x1 DESTR_NEQ: x2 <> a DESTR_NEQs: a <> x2
ret (Fr a) = ret (Fr a)
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
subst_loc x2 u2 (Bd n) =
subst_loc x2 u2 (Bd n) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
ret (Bd n) = ret (Bd n) '{ x1 ~> u1 '{ x2 ~> u2}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2 n: nat
ret (Bd n) = ret (Bd n)
reflexivity.Qed.(* LNgen 8: subst-subst *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
bind (subst_loc x2 u2 ⋆ subst_loc x1 u1) t =
(bind (subst_loc x1 (bind (subst_loc x2 u2) u1))
∘ bind (subst_loc x2 u2)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: ~ x1 ∈ free u2 H0: x1 <> x2
reflexivity.Qed.(** ** Commuting two substitutions *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: x1 <> x2 H0: ~ x1 ∈ free u2 H1: ~ x2 ∈ free u1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: x1 <> x2 H0: ~ x1 ∈ free u2 H1: ~ x2 ∈ free u1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x1, x2: atom H: x1 <> x2 H0: ~ x1 ∈ free u2 H1: ~ x2 ∈ free u1
reflexivity.Qed.(** ** Local closure is preserved by substitution *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallutx, LC t -> LC u -> LC (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallutx, LC t -> LC u -> LC (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallutx,
(forallwl, (w, l) ∈d t -> lc_loc 0 (w, l)) ->
LC u ->
forallwl, (w, l) ∈d t '{ x ~> u} -> lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u w: nat l: LN hin: (w, l) ∈d t '{ x ~> u}
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u w: nat l: LN hin: (w, l) ∈d t /\ l <> Fr x \/
(existsw1w2,
(w1, Fr x) ∈d t /\
(w2, l) ∈d u /\ w = w1 ● w2)
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u w: nat l: LN H: (w, l) ∈d t H0: l <> Fr x
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u w: nat l: LN n1, n2: nat h1: (n1, Fr x) ∈d t h2: (n2, l) ∈d u h3: w = n1 ● n2
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u w: nat l: LN H: (w, l) ∈d t H0: l <> Fr x
lc_loc 0 (w, l)
auto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u w: nat l: LN n1, n2: nat h1: (n1, Fr x) ∈d t h2: (n2, l) ∈d u h3: w = n1 ● n2
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: LC u l: LN n1, n2: nat h1: (n1, Fr x) ∈d t h2: (n2, l) ∈d u
lc_loc 0 (n1 ● n2, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) l: LN n1, n2: nat h1: (n1, Fr x) ∈d t h2: (n2, l) ∈d u
lc_loc 0 (n1 ● n2, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) l: LN n2: nat lcu: lc_loc 0 (n2, l) n1: nat h1: (n1, Fr x) ∈d t h2: (n2, l) ∈d u
lc_loc 0 (n1 ● n2, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl,
(w, l) ∈d t ->
match l with
| Fr _ => True
| Bd n => n < w + 0end l: LN n2: nat lcu: match l with
| Fr _ => True
| Bd n => n < n2 + 0end n1: nat h1: (n1, Fr x) ∈d t h2: (n2, l) ∈d u
match l with
| Fr _ => True
| Bd n => n < (n1 ● n2) + 0end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl,
(w, l) ∈d t ->
match l with
| Fr _ => True
| Bd n => n < w + 0end n, n2: nat lcu: n < n2 + 0 n1: nat h1: (n1, Fr x) ∈d t h2: (n2, Bd n) ∈d u
n < (n1 ● n2) + 0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom lct: forallwl,
(w, l) ∈d t ->
match l with
| Fr _ => True
| Bd n => n < w + 0end n, n2: nat lcu: n < n2 + 0 n1: nat h1: (n1, Fr x) ∈d t h2: (n2, Bd n) ∈d u
n < n1 + n2 + 0
lia.Qed.(** ** Decompose substitution into closing/opening *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralluwlx,
subst_loc x u l =
open_loc u (cobind (close_loc x) (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralluwlx,
subst_loc x u l =
open_loc u (cobind (close_loc x) (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat l: LN x: atom
subst_loc x u l =
open_loc u (cobind (close_loc x) (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom
u = open_loc u (cobind (close_loc x) (w, Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x, a: atom H: a <> x
ret (Fr a) =
open_loc u (cobind (close_loc x) (w, Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom n: nat
ret (Bd n) =
open_loc u (cobind (close_loc x) (w, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom
u = open_loc u (cobind (close_loc x) (w, Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom
u =
match (if x == x then Bd w else Fr x) with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom DESTR_EQ, DESTR_EQs: x = x
u =
match w ?= w with
| Eq => u
| Lt => ret (Bd w)
| Gt => ret (Bd (w - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom DESTR_EQ, DESTR_EQs: x = x
u =
match w ?= w with
| Eq => u
| Lt => ret (Bd w)
| Gt => ret (Bd (w - 1))
end
compare naturals w and w.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x, a: atom H: a <> x
ret (Fr a) =
open_loc u (cobind (close_loc x) (w, Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x, a: atom H: a <> x
ret (Fr a) =
match (if x == a then Bd w else Fr a) with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend
compare values x and a. (* todo fix fragile names *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom n: nat
ret (Bd n) =
open_loc u (cobind (close_loc x) (w, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom n: nat
ret (Bd n) =
matchmatch n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom n: nat
ret (Bd n) =
matchmatch n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom ineqrw: (w ?= w) = Eq
ret (Bd w) =
match S w ?= w with
| Eq => u
| Lt => ret (Bd (S w))
| Gt => ret (Bd (S w - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd n) =
match S n ?= w with
| Eq => u
| Lt => ret (Bd (S n))
| Gt => ret (Bd (S n - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat x: atom n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd n) =
match S n ?= w with
| Eq => u
| Lt => ret (Bd (S n))
| Gt => ret (Bd (S n - 1))
end
nowcompare naturals (S n) and w.Qed.(* LNgen 9: subst-spec *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxut, t '{ x ~> u} = ('[x] t) '(u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxut, t '{ x ~> u} = ('[x] t) '(u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN
t '{ x ~> u} = ('[x] t) '(u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN
t '{ x ~> u} = (open u ∘ close x) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN
bind (subst_loc x u) t =
(bindd (open_loc u) ∘ mapd (close_loc x)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN
bind (subst_loc x u) t =
bindd (open_loc u ⋆1 close_loc x) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN
bindd (subst_loc x u ∘ extract) t =
bindd (open_loc u ⋆1 close_loc x) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN
subst_loc x u ∘ extract = open_loc u ⋆1 close_loc x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN w: nat l: LN
(subst_loc x u ∘ extract) (w, l) =
(open_loc u ⋆1 close_loc x) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom u: T LN t: U LN w: nat l: LN
subst_loc x u l =
matchmatch l with
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endendwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend
nowerewrite subst_spec_local.Qed.(** ** Substitution when <<u>> is a LN **)(******************************************************************************)Definitionsubst_loc_LNx (u: LN): LN -> LN :=
funl => match l with
| Fr y => if x == y then u else Fr y
| Bd n => Bd n
end.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxl, subst x (ret l) = map (subst_loc_LN x l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxl, subst x (ret l) = map (subst_loc_LN x l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN
subst x (ret l) = map (subst_loc_LN x l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN
bind (subst_loc x (ret l)) = map (subst_loc_LN x l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN
bind (subst_loc x (ret l)) t =
map (subst_loc_LN x l) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN
foralla : LN,
a ∈ t ->
subst_loc x (ret l) a = ret (subst_loc_LN x l a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN l': LN l'in: l' ∈ t
subst_loc x (ret l) l' = ret (subst_loc_LN x l l')
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN n: atom l'in: Fr n ∈ t
subst_loc x (ret l) (Fr n) =
ret (subst_loc_LN x l (Fr n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN n: nat l'in: Bd n ∈ t
subst_loc x (ret l) (Bd n) =
ret (subst_loc_LN x l (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN n: atom l'in: Fr n ∈ t
subst_loc x (ret l) (Fr n) =
ret (subst_loc_LN x l (Fr n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN n: atom l'in: Fr n ∈ t
(if x == n then ret l else ret (Fr n)) =
ret (if x == n then l else Fr n)
compare values x and n.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom l: LN t: U LN n: nat l'in: Bd n ∈ t
subst_loc x (ret l) (Bd n) =
ret (subst_loc_LN x l (Bd n))
reflexivity.Qed.(** ** Substitution by the same variable is the identity *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, t '{ x ~> ret (Fr x)} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, t '{ x ~> ret (Fr x)} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
t '{ x ~> ret (Fr x)} = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
foralll, l ∈ t -> subst_loc x (ret (Fr x)) l = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom l: LN H: l ∈ t
subst_loc x (ret (Fr x)) l = ret l
compare l to atom x; now simpl_local.Qed.(** ** Free variables after variable closing *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallwlt (xy : atom),
(w, l) ∈d t ->
close_loc x (w, l) = Fr y -> Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallwlt (xy : atom),
(w, l) ∈d t ->
close_loc x (w, l) = Fr y -> Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat l: LN t: U LN x, y: atom lin: (w, l) ∈d t heq: close_loc x (w, l) = Fr y
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat la: atom t: U LN x, y: atom lin: (w, Fr la) ∈d t heq: close_loc x (w, Fr la) = Fr y
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w, ln: nat t: U LN x, y: atom lin: (w, Bd ln) ∈d t heq: close_loc x (w, Bd ln) = Fr y
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat la: atom t: U LN x, y: atom lin: (w, Fr la) ∈d t heq: close_loc x (w, Fr la) = Fr y
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat la: atom t: U LN x, y: atom lin: (w, Fr la) ∈d t heq: (if x == la then Bd w else Fr la) = Fr y
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat la: atom t: U LN x, y: atom lin: (w, Fr la) ∈d t DESTR_NEQ: x <> la heq: Fr la = Fr y DESTR_NEQs: la <> x
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN x, y: atom DESTR_NEQs: y <> x DESTR_NEQ: x <> y lin: (w, Fr y) ∈d t
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w: nat t: U LN x, y: atom DESTR_NEQs: y <> x DESTR_NEQ: x <> y lin: Fr y ∈ t
Fr y ∈ t /\ x <> y
tauto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w, ln: nat t: U LN x, y: atom lin: (w, Bd ln) ∈d t heq: close_loc x (w, Bd ln) = Fr y
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U w, ln: nat t: U LN x, y: atom lin: (w, Bd ln) ∈d t heq: match ln ?= w with
| Lt => Bd ln
| _ => Bd (S ln)
end = Fr y
Fr y ∈ t /\ x <> y
compare_nats_args ln w; discriminate.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
x <> y ->
Fr y ∈ t ->
existswl, (w, l) ∈d t /\ close_loc x (w, l) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
x <> y ->
Fr y ∈ t ->
existswl, (w, l) ∈d t /\ close_loc x (w, l) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom neq: x <> y yin: Fr y ∈ t
existswl, (w, l) ∈d t /\ close_loc x (w, l) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom neq: x <> y yin: existse : nat, (e, Fr y) ∈d t
existswl, (w, l) ∈d t /\ close_loc x (w, l) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom neq: x <> y w: nat yin: (w, Fr y) ∈d t
existswl, (w, l) ∈d t /\ close_loc x (w, l) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom neq: x <> y w: nat yin: (w, Fr y) ∈d t
existsl, (w, l) ∈d t /\ close_loc x (w, l) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom neq: x <> y w: nat yin: (w, Fr y) ∈d t
(w, Fr y) ∈d t /\ close_loc x (w, Fr y) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom neq: x <> y w: nat yin: (w, Fr y) ∈d t
(w, Fr y) ∈d t /\
(if x == y then Bd w else Fr y) = Fr y
compare values x and y.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
y ∈ free ('[x] t) <-> y ∈ free t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
y ∈ free ('[x] t) <-> y ∈ free t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
y ∈ free ('[x] t) <-> y ∈ free t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
(existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y) <->
y ∈ free t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
(existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y) <->
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
(existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y) ->
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
Fr y ∈ t /\ x <> y ->
existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
(existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y) ->
Fr y ∈ t /\ x <> y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom x0: nat x1: LN H: (x0, x1) ∈d t H0: close_loc x (x0, x1) = Fr y
Fr y ∈ t /\ x <> y
eauto using in_free_close_iff_loc1.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom
Fr y ∈ t /\ x <> y ->
existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom H: Fr y ∈ t H0: x <> y
existswl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = Fr y
eauto using in_free_close_iff_loc2.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
y <> x -> y ∈ free ('[x] t) <-> y ∈ free t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallt (xy : atom),
y <> x -> y ∈ free ('[x] t) <-> y ∈ free t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom H: y <> x
y ∈ free ('[x] t) <-> y ∈ free t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x, y: atom H: y <> x
y ∈ free t /\ x <> y <-> y ∈ free t
intuition.Qed.(* LNgen 3: fv-close *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, FV ('[x] t) [=] FV t \\ {{x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, FV ('[x] t) [=] FV t \\ {{x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
FV ('[x] t) [=] FV t \\ {{x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom a: AtomSet.elt
a `in` FV ('[x] t) <-> a `in` (FV t \\ {{x}})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom a: AtomSet.elt
a `in` FV ('[x] t) <-> a `in` FV t /\ a `notin` {{x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom a: AtomSet.elt
a ∈ free ('[x] t) <-> a ∈ free t /\ a `notin` {{x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom a: AtomSet.elt
a ∈ free t /\ x <> a <-> a ∈ free t /\ a `notin` {{x}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom a: AtomSet.elt
a ∈ free t /\ x <> a <-> a ∈ free t /\ a <> x
intuition.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, ~ x ∈ free ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, ~ x ∈ free ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
~ x ∈ free ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
~ (x ∈ free t /\ x <> x)
intuition.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, x `notin` FV ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, x `notin` FV ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
x `notin` FV ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
~ x ∈ free ('[x] t)
apply nin_free_close.Qed.(** ** Variable closing and local closure *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, LC t -> LCn 1 ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, LC t -> LCn 1 ('[x] t)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat l: LN hin: (w, l) ∈d '[x] t
lc_loc 1 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat l: LN hin: existsl1,
(w, l1) ∈d t /\ close_loc x (w, l1) = l
lc_loc 1 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat l, l1: LN H: (w, l1) ∈d t H0: close_loc x (w, l1) = l
lc_loc 1 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat H: (w, Fr x) ∈d t
lc_loc 1 (w, close_loc x (w, Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat a: atom H: (w, Fr a) ∈d t H1: a <> x
lc_loc 1 (w, close_loc x (w, Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w, n: nat H: (w, Bd n) ∈d t
lc_loc 1 (w, close_loc x (w, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat H: (w, Fr x) ∈d t
lc_loc 1 (w, close_loc x (w, Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat H: (w, Fr x) ∈d t
match (if x == x then Bd w else Fr x) with
| Fr _ => True
| Bd n => n < w + 1end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat H: (w, Fr x) ∈d t DESTR_EQ, DESTR_EQs: x = x
w < w + 1
unfold_lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat a: atom H: (w, Fr a) ∈d t H1: a <> x
lc_loc 1 (w, close_loc x (w, Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat a: atom H: (w, Fr a) ∈d t H1: a <> x
match (if x == a then Bd w else Fr a) with
| Fr _ => True
| Bd n => n < w + 1end
compare values x and a.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w, n: nat H: (w, Bd n) ∈d t
lc_loc 1 (w, close_loc x (w, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w, n: nat H: (w, Bd n) ∈d t
matchmatch n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endwith
| Fr _ => True
| Bd n => n < w + 1end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat ineqrw: (w ?= w) = Eq H: (w, Bd w) ∈d t
S w < w + 1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w, n: nat H: (w, Bd n) ∈d t ineqrw: (n ?= w) = Gt ineqp: n > w
S n < w + 1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat ineqrw: (w ?= w) = Eq H: (w, Bd w) ∈d t
S w < w + 1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat ineqrw: (w ?= w) = Eq H: (w, Bd w) ∈d t
False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom w: nat lct: lc_loc 0 (w, Bd w) ineqrw: (w ?= w) = Eq H: (w, Bd w) ∈d t
False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom w: nat lct: w < w + 0 ineqrw: (w ?= w) = Eq H: (w, Bd w) ∈d t
False
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom lct: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w, n: nat H: (w, Bd n) ∈d t ineqrw: (n ?= w) = Gt ineqp: n > w
S n < w + 1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom w, n: nat lct: lc_loc 0 (w, Bd n) H: (w, Bd n) ∈d t ineqrw: (n ?= w) = Gt ineqp: n > w
S n < w + 1
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom w, n: nat lct: n < w + 0 H: (w, Bd n) ∈d t ineqrw: (n ?= w) = Gt ineqp: n > w
S n < w + 1
lia.Qed.(** ** Upper and lower bounds on free variables after opening *)(******************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltuwlx,
l ∈ t ->
x ∈ free (open_loc u (w, l)) ->
l = Fr x /\ x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltuwlx,
l ∈ t ->
x ∈ free (open_loc u (w, l)) ->
l = Fr x /\ x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat l: LN x: atom lin: l ∈ t xin: x ∈ free (open_loc u (w, l))
l = Fr x /\ x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat l: LN x: atom lin: l ∈ t xin: Fr x ∈ open_loc u (w, l)
l = Fr x /\ x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat l: LN x: atom lin: l ∈ t xin: Fr x ∈ open_loc u (w, l)
l = Fr x /\ Fr x ∈ t \/ Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat y, x: atom lin: Fr y ∈ t xin: Fr x ∈ open_loc u (w, Fr y)
Fr y = Fr x /\ Fr x ∈ t \/ Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ open_loc u (w, Bd n)
Bd n = Fr x /\ Fr x ∈ t \/ Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat y, x: atom lin: Fr y ∈ t xin: Fr x ∈ open_loc u (w, Fr y)
Fr y = Fr x /\ Fr x ∈ t \/ Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat y, x: atom lin: Fr y ∈ t xin: Fr x ∈ open_loc u (w, Fr y)
Fr y = Fr x /\ Fr x ∈ t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat y, x: atom lin: Fr y ∈ t xin: x = y
Fr y = Fr x /\ Fr x ∈ t
inverts xin...
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ open_loc u (w, Bd n)
Bd n = Fr x /\ Fr x ∈ t \/ Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ open_loc u (w, Bd n)
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x
∈ match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ ret (Bd n) ineqrw: (n ?= w) = Lt ineqp: n < w
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat x: atom lin: Bd w ∈ t xin: Fr x ∈ u ineqrw: (w ?= w) = Eq
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ ret (Bd (n - 1)) ineqrw: (n ?= w) = Gt ineqp: n > w
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ ret (Bd n) ineqrw: (n ?= w) = Lt ineqp: n < w
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t ineqrw: (n ?= w) = Lt ineqp: n < w
~ Fr x ∈ ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t ineqrw: (n ?= w) = Lt ineqp: n < w
Fr x <> Bd n
easy.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat x: atom lin: Bd w ∈ t xin: Fr x ∈ u ineqrw: (w ?= w) = Eq
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ ret (Bd (n - 1)) ineqrw: (n ?= w) = Gt ineqp: n > w
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat x: atom lin: Bd w ∈ t xin: Fr x ∈ u ineqrw: (w ?= w) = Eq
Fr x ∈ u
assumption.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ ret (Bd (n - 1)) ineqrw: (n ?= w) = Gt ineqp: n > w
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t xin: Fr x ∈ ret (Bd (n - 1)) ineqrw: (n ?= w) = Gt ineqp: n > w
Fr x ∈ u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t ineqrw: (n ?= w) = Gt ineqp: n > w
~ Fr x ∈ ret (Bd (n - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w, n: nat x: atom lin: Bd n ∈ t ineqrw: (n ?= w) = Gt ineqp: n > w
Fr x <> Bd (n - 1)
easy.}Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux,
x ∈ free (t '(u)) -> x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux,
x ∈ free (t '(u)) -> x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom xin: x ∈ free (t '(u))
x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom xin: existswl1,
(w, l1) ∈d t /\ x ∈ free (open_loc u (w, l1))
x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat l: LN hin: (w, l) ∈d t H: x ∈ free (open_loc u (w, l))
x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat l: LN hin: l ∈ t H: x ∈ free (open_loc u (w, l))
x ∈ free t \/ x ∈ free u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat l: LN hin: l ∈ t H: x ∈ free (open_loc u (w, l))
l = Fr x /\ x ∈ free t \/ x ∈ free u
eauto using free_open_upper_local.Qed.(* LNgen 1: fv-open-upper *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, FV (t '(u)) ⊆ FV t ∪ FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, FV (t '(u)) ⊆ FV t ∪ FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN
FV (t '(u)) ⊆ FV t ∪ FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN a: AtomSet.elt
a `in` FV (t '(u)) -> a `in` (FV t ∪ FV u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN a: AtomSet.elt
a `in` FV (t '(u)) -> a `in` FV t \/ a `in` FV u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN a: AtomSet.elt
a ∈ free (t '(u)) -> a ∈ free t \/ a ∈ free u
auto using free_open_upper.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux, x ∈ free t -> x ∈ free (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltux, x ∈ free t -> x ∈ free (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom xin: x ∈ free t
x ∈ free (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom xin: Fr x ∈ t
x ∈ free (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom xin: existse : nat, (e, Fr x) ∈d t
x ∈ free (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat xin: (w, Fr x) ∈d t
x ∈ free (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat xin: (w, Fr x) ∈d t
existswl1,
(w, l1) ∈d t /\ x ∈ free (open_loc u (w, l1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat xin: (w, Fr x) ∈d t
existswl1, (w, l1) ∈d t /\ Fr x ∈ open_loc u (w, l1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN x: atom w: nat xin: (w, Fr x) ∈d t
(w, Fr x) ∈d t /\ Fr x ∈ open_loc u (w, Fr x)
nowautorewrite with tea_local.Qed.(* LNgen 2: fv-open-lower *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, FV t ⊆ FV (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, FV t ⊆ FV (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN
FV t ⊆ FV (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN a: AtomSet.elt
a `in` FV t -> a `in` FV (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN a: AtomSet.elt
a ∈ free t -> a ∈ free (t '(u))
apply free_open_lower.Qed.(** ** Opening a locally closed term is the identity *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralluwl,
lc_loc 0 (w, l) -> open_loc u (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralluwl,
lc_loc 0 (w, l) -> open_loc u (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat l: LN hyp: lc_loc 0 (w, l)
open_loc u (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat a: atom hyp: lc_loc 0 (w, Fr a)
open_loc u (w, Fr a) = ret (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w, n: nat hyp: lc_loc 0 (w, Bd n)
open_loc u (w, Bd n) = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w: nat a: atom hyp: lc_loc 0 (w, Fr a)
open_loc u (w, Fr a) = ret (Fr a)
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w, n: nat hyp: lc_loc 0 (w, Bd n)
open_loc u (w, Bd n) = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN w, n: nat hyp: n < w + 0
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end = ret (Bd n)
compare naturals n and w; unfold_lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, LC t -> t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, LC t -> t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN lc: LC t
t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN lc: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l)
t '(u) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN lc: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l)
forallwl, (w, l) ∈d t -> open_loc u (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN lc: forallwl, (w, l) ∈d t -> lc_loc 0 (w, l) w: nat l: LN lin: (w, l) ∈d t
open_loc u (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN w: nat l: LN lc: lc_loc 0 (w, l) lin: (w, l) ∈d t
open_loc u (w, l) = ret l
destruct l; auto using open_lc_local.Qed.(** ** Opening followed by substitution *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu1u2x,
LC u2 ->
subst x u2 ∘ open_loc u1 =
open_loc (u1 '{ x ~> u2}) ⋆5 subst_loc x u2 ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu1u2x,
LC u2 ->
subst x u2 ∘ open_loc u1 =
open_loc (u1 '{ x ~> u2}) ⋆5 subst_loc x u2 ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2
subst x u2 ∘ open_loc u1 =
open_loc (u1 '{ x ~> u2}) ⋆5 subst_loc x u2 ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat l: LN
(subst x u2 ∘ open_loc u1) (w, l) =
(open_loc (u1 '{ x ~> u2}) ⋆5 subst_loc x u2 ∘ extract)
(w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat l: LN
(subst x u2 ∘ open_loc u1) (w, l) =
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w)
((subst_loc x u2 ∘ extract) (w, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat l: LN
match l with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => u1
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat
ret (Fr x) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat a: atom H: a <> x
ret (Fr a) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat
match n ?= w with
| Eq => u1
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat
ret (Fr x) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat
subst_loc x u2 (Fr x) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat
(if x == x then u2 else ret (Fr x)) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(if x == x then u2 else ret (Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x
u2 = bindd (open_loc (u1 '{ x ~> u2}) ○ incr w) u2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w) u2 = u2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x
forallw0 (a : LN),
(w0, a) ∈d u2 ->
open_loc (u1 '{ x ~> u2}) (incr w (w0, a)) = ret a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x w0: nat a: LN H: (w0, a) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, a)) = ret a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x w0: nat n: atom H: (w0, Fr n) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, Fr n)) =
ret (Fr n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, Bd n)) =
ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x w0: nat n: atom H: (w0, Fr n) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, Fr n)) =
ret (Fr n)
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, Bd n)) =
ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl, (w, l) ∈d u2 -> lc_loc 0 (w, l) w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, Bd n)) =
ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2
open_loc (u1 '{ x ~> u2}) (incr w (w0, Bd n)) =
ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2
match n ?= w ● w0 with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0: nat ineqrw: (w ● w0 ?= w ● w0) = Eq H: (w0, Bd (w ● w0)) ∈d u2
u1 '{ x ~> u2} = ret (Bd (w ● w0))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2 ineqrw: (n ?= w ● w0) = Gt ineqp: n > w ● w0
n - 1 = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0: nat ineqrw: (w ● w0 ?= w ● w0) = Eq H: (w0, Bd (w ● w0)) ∈d u2
u1 '{ x ~> u2} = ret (Bd (w ● w0))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom w, w0: nat lcu2: match Bd (w ● w0) with
| Fr _ => True
| Bd n => n < w0 + 0end DESTR_EQ, DESTR_EQs: x = x ineqrw: (w ● w0 ?= w ● w0) = Eq H: (w0, Bd (w ● w0)) ∈d u2
u1 '{ x ~> u2} = ret (Bd (w ● w0))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom w, w0: nat lcu2: w ● w0 < w0 + 0 DESTR_EQ, DESTR_EQs: x = x ineqrw: (w ● w0 ?= w ● w0) = Eq H: (w0, Bd (w ● w0)) ∈d u2
u1 '{ x ~> u2} = ret (Bd (w ● w0))
unfold_lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2 ineqrw: (n ?= w ● w0) = Gt ineqp: n > w ● w0
n - 1 = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: forallwl,
(w, l) ∈d u2 ->
match l with
| Fr _ => True
| Bd n => n < w + 0end w: nat DESTR_EQ, DESTR_EQs: x = x w0, n: nat H: (w0, Bd n) ∈d u2 ineqrw: (n ?= w ● w0) = Gt ineqp: n > w ● w0
n - 1 = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom w0, n: nat lcu2: match Bd n with
| Fr _ => True
| Bd n => n < w0 + 0end w: nat DESTR_EQ, DESTR_EQs: x = x H: (w0, Bd n) ∈d u2 ineqrw: (n ?= w ● w0) = Gt ineqp: n > w ● w0
n - 1 = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom w0, n: nat lcu2: n < w0 + 0 w: nat DESTR_EQ, DESTR_EQs: x = x H: (w0, Bd n) ∈d u2 ineqrw: (n ?= w ● w0) = Gt ineqp: n > w ● w0
n - 1 = n
unfold_lia.}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat a: atom H: a <> x
ret (Fr a) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat a: atom H: a <> x
subst_loc x u2 (Fr a) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat a: atom H: a <> x
(if x == a then u2 else ret (Fr a)) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(if x == a then u2 else ret (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat a: atom H: a <> x DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat a: atom H: a <> x DESTR_NEQ: x <> a DESTR_NEQs: a <> x
(eq ∘ ret) (Fr a)
((bindd (open_loc (u1 '{ x ~> u2}) ○ incr w) ∘ ret)
(Fr a))
nowrewrite (kdm_bindd0).
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat
match n ?= w with
| Eq => u1
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(subst_loc x u2 (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
ret (Bd n) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd w))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
ret (Bd n) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
subst_loc x u2 (Bd n) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
subst_loc x u2 (Bd n) =
(bindd (open_loc (u1 '{ x ~> u2}) ○ incr w) ∘ ret)
(Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
subst_loc x u2 (Bd n) =
open_loc (u1 '{ x ~> u2}) (incr w (ret (Bd n)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
ret (Bd n) =
match n ?= w ● Ƶ with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Lt ineqp: n < w
ret (Bd n) =
match n ?= w with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end
compare naturals n and w.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd w))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
(bindd (open_loc (u1 '{ x ~> u2}) ○ incr w) ∘ ret)
(Bd w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
(open_loc (u1 '{ x ~> u2}) ○ incr w ∘ ret) (Bd w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
open_loc (u1 '{ x ~> u2}) (incr w (ret (Bd w)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
match w ?= w ● Ƶ with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd w)
| Gt => ret (Bd (w - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w: nat ineqrw: (w ?= w) = Eq
u1 '{ x ~> u2} =
match w ?= w with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd w)
| Gt => ret (Bd (w - 1))
end
compare naturals w and w.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) '{ x ~> u2} =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
subst_loc x u2 (Bd (n - 1)) =
bindd (open_loc (u1 '{ x ~> u2}) ○ incr w)
(ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
subst_loc x u2 (Bd (n - 1)) =
(bindd (open_loc (u1 '{ x ~> u2}) ○ incr w) ∘ ret)
(Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
subst_loc x u2 (Bd (n - 1)) =
(open_loc (u1 '{ x ~> u2}) ○ incr w ∘ ret) (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
subst_loc x u2 (Bd (n - 1)) =
open_loc (u1 '{ x ~> u2}) (incr w (ret (Bd n)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) =
match n ?= w ● Ƶ with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN x: atom lcu2: LC u2 w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) =
match n ?= w with
| Eq => u1 '{ x ~> u2}
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end
compare naturals n and w.Qed.(* LNgen 10: subst-open *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu1u2tx,
LC u2 ->
(t '(u1)) '{ x ~> u2} =
(t '{ x ~> u2}) '(u1 '{ x ~> u2})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu1u2tx,
LC u2 ->
(t '(u1)) '{ x ~> u2} =
(t '{ x ~> u2}) '(u1 '{ x ~> u2})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
(t '(u1)) '{ x ~> u2} =
(t '{ x ~> u2}) '(u1 '{ x ~> u2})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
(subst x u2 ∘ open u1) t =
(open (u1 '{ x ~> u2}) ∘ subst x u2) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
(bind (subst_loc x u2) ∘ bindd (open_loc u1)) t =
(bindd (open_loc (u1 '{ x ~> u2}))
∘ bind (subst_loc x u2)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
bindd (subst_loc x u2 ⋆ open_loc u1) t =
(bindd (open_loc (u1 '{ x ~> u2}))
∘ bind (subst_loc x u2)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
bindd (subst_loc x u2 ⋆ open_loc u1) t =
bindd
((fun '(w, t) =>
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w) t)
∘ map (subst_loc x u2)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
subst_loc x u2 ⋆ open_loc u1 =
(fun '(w, t) =>
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w) t)
∘ map (subst_loc x u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
subst x u2 ∘ open_loc u1 =
(fun '(w, t) =>
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w) t)
∘ map (subst_loc x u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
subst x u2 ∘ open_loc u1 =
(fun '(w, t) =>
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w) t)
∘ map (subst_loc x u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
open_loc (u1 '{ x ~> u2}) ⋆5 subst_loc x u2 ∘ extract =
(fun '(w, t) =>
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w) t)
∘ map (subst_loc x u2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u1, u2: T LN t: U LN x: atom lc: LC u2
open_loc (u1 '{ x ~> u2}) ⋆5 subst_loc x u2 ∘ extract =
(fun '(w, t) =>
bindd (open_loc (u1 '{ x ~> u2}) ⦿ w) t)
∘ map (subst_loc x u2)
now ext [w t'].Qed.(** ** Closing followed by substitution *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (y : AtomSet.elt) u (depth : nat),
LC u ->
y `notin` FV u -> mapd (close_loc y ⦿ depth) u = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (y : AtomSet.elt) u (depth : nat),
LC u ->
y `notin` FV u -> mapd (close_loc y ⦿ depth) u = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u
mapd (close_loc y ⦿ depth) u = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u
mapd (close_loc y ⦿ depth) u = id u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u
mapd (close_loc y ⦿ depth) u = mapd extract u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u
forall (e : nat) (a : LN),
(e, a) ∈d u ->
(close_loc y ⦿ depth) (e, a) = extract (e, a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: LN Hin: (e, a) ∈d u
(close_loc y ⦿ depth) (e, a) = extract (e, a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat Hin: (e, Fr y) ∈d u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y
(close_loc y ⦿ depth) (e, Fr a) = extract (e, Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e, n: nat Hin: (e, Bd n) ∈d u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat Hin: (e, Fr y) ∈d u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat Hin: (e, Fr y) ∈d u
False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat Hin: Fr y ∈ u
False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: ~ y ∈ free u e: nat Hin: Fr y ∈ u
False
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: ~ Fr y ∈ u e: nat Hin: Fr y ∈ u
False
easy.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y
(close_loc y ⦿ depth) (e, Fr a) = extract (e, Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y
(if y == a then Bd (depth ● e) else Fr a) = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y DESTR_NEQ: y <> a DESTR_NEQs: a <> y
(if y == a then Bd (depth ● e) else Fr a) = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y DESTR_NEQ: y <> a DESTR_NEQs: a <> y e0: y = a
Bd (depth ● e) = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y DESTR_NEQ: y <> a DESTR_NEQs: a <> y n: y <> a
Fr a = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e: nat a: atom Hin: (e, Fr a) ∈d u H: a <> y DESTR_NEQ: y <> a DESTR_NEQs: a <> y n: y <> a
Fr a = Fr a
easy.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e, n: nat Hin: (e, Bd n) ∈d u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e, n: nat Hin: (e, Bd n) ∈d u
match n ?= depth ● e with
| Lt => Bd n
| _ => Bd (S n)
end = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: LC u Hnin: y `notin` FV u e, n: nat Hin: (e, Bd n) ∈d u
match n ?= depth + e with
| Lt => Bd n
| _ => Bd (S n)
end = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth: nat HLC: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) Hnin: y `notin` FV u e, n: nat Hin: (e, Bd n) ∈d u
match n ?= depth + e with
| Lt => Bd n
| _ => Bd (S n)
end = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth, e, n: nat HLC: lc_loc 0 (e, Bd n) Hnin: y `notin` FV u Hin: (e, Bd n) ∈d u
match n ?= depth + e with
| Lt => Bd n
| _ => Bd (S n)
end = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: AtomSet.elt u: T LN depth, e, n: nat HLC: n < e + 0 Hnin: y `notin` FV u Hin: (e, Bd n) ∈d u
match n ?= depth + e with
| Lt => Bd n
| _ => Bd (S n)
end = Bd n
compare naturals n and (depth + e)%nat.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (xy : atom) u (depth : nat) l,
x <> y ->
y `notin` FV u ->
LC u ->
subst_loc x u (close_loc y (depth, l)) =
mapd (close_loc y ⦿ depth) (subst_loc x u l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forall (xy : atom) u (depth : nat) l,
x <> y ->
y `notin` FV u ->
LC u ->
subst_loc x u (close_loc y (depth, l)) =
mapd (close_loc y ⦿ depth) (subst_loc x u l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat l: LN Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
subst_loc x u (close_loc y (depth, l)) =
mapd (close_loc y ⦿ depth) (subst_loc x u l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
subst_loc x u (close_loc y (depth, Fr y)) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y
subst_loc x u (close_loc y (depth, Fr a)) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u (close_loc y (depth, Bd n)) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
subst_loc x u (close_loc y (depth, Fr y)) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
subst_loc x u (Bd depth) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
subst_loc x u (Bd depth) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
subst_loc x u (Bd depth) =
mapd (close_loc y ⦿ depth) (ret (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) =
mapd (close_loc y ⦿ depth) (ret (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) =
(mapd (close_loc y ⦿ depth) ∘ ret) (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) =
(ret ∘ close_loc y ⦿ depth ∘ ret) (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) =
(ret ∘ (close_loc y ⦿ depth ∘ ret)) (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) =
(ret ∘ (close_loc y ∘ pair depth)) (Fr y)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) = ret (close_loc y (depth, Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u DESTR_NEQ: x <> y DESTR_NEQs: y <> x
ret (Bd depth) =
ret (if y == y then Bd depth else Fr y)
nowcompare values y and y.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y
subst_loc x u (close_loc y (depth, Fr a)) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y
subst_loc x u (Fr a) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: atom u: T LN depth: nat a: atom Hneq: a <> y lc: y `notin` FV u Hnotin: LC u H: a <> y DESTR_EQs: a = a
subst_loc a u (Fr a) =
mapd (close_loc y ⦿ depth) (subst_loc a u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
subst_loc x u (Fr a) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: atom u: T LN depth: nat a: atom Hneq: a <> y lc: y `notin` FV u Hnotin: LC u H: a <> y DESTR_EQs: a = a
subst_loc a u (Fr a) =
mapd (close_loc y ⦿ depth) (subst_loc a u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U y: atom u: T LN depth: nat a: atom Hneq: a <> y lc: y `notin` FV u Hnotin: LC u H: a <> y DESTR_EQs: a = a
u = mapd (close_loc y ⦿ depth) u
rewrite close_notin_FV; auto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
subst_loc x u (Fr a) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) = mapd (close_loc y ⦿ depth) (ret (Fr a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) = (mapd (close_loc y ⦿ depth) ∘ ret) (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) = (ret ∘ close_loc y ⦿ depth ∘ ret) (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) =
(ret ∘ (close_loc y ⦿ depth ∘ ret)) (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) = (ret ∘ (close_loc y ∘ pair depth)) (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u a: atom H: a <> y DESTR_NEQ: x <> a DESTR_NEQs: a <> x
ret (Fr a) = ret (if y == a then Bd depth else Fr a)
destruct_eq_args y a.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u (close_loc y (depth, Bd n)) =
mapd (close_loc y ⦿ depth) (subst_loc x u (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end = mapd (close_loc y ⦿ depth) (ret (Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end = (mapd (close_loc y ⦿ depth) ∘ ret) (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end = (ret ∘ close_loc y ⦿ depth ∘ ret) (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end = (ret ∘ (close_loc y ⦿ depth ∘ ret)) (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end = (ret ∘ (close_loc y ∘ pair depth)) (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x, y: atom u: T LN depth: nat Hneq: x <> y lc: y `notin` FV u Hnotin: LC u n: nat
subst_loc x u
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end =
ret
match n ?= depth with
| Lt => Bd n
| _ => Bd (S n)
end
compare naturals n and depth.Qed.(* LNgen 13: subst-close *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallut (xy : atom),
x <> y ->
y `notin` FV u ->
LC u -> ('[y] t) '{ x ~> u} = '[y] (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallut (xy : atom),
x <> y ->
y `notin` FV u ->
LC u -> ('[y] t) '{ x ~> u} = '[y] (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
('[y] t) '{ x ~> u} = '[y] (t '{ x ~> u})
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
(subst x u ∘ close y) t = (close y ∘ subst x u) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
(bind (subst_loc x u) ∘ mapd (close_loc y)) t =
(mapd (close_loc y) ∘ bind (subst_loc x u)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
bindd (subst_loc x u ∘ close_loc y) t =
(mapd (close_loc y) ∘ bind (subst_loc x u)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
bindd (subst_loc x u ∘ close_loc y) t =
bindd
(fun '(w, a) =>
mapd (close_loc y ⦿ w) (subst_loc x u a)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
subst_loc x u ∘ close_loc y =
(fun '(w, a) =>
mapd (close_loc y ⦿ w) (subst_loc x u a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u
subst_loc x u ○ close_loc y =
(fun '(w, a) =>
mapd (close_loc y ⦿ w) (subst_loc x u a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom Hneq: x <> y lc: y `notin` FV u Hnotin: LC u depth: nat l: LN
subst_loc x u (close_loc y (depth, l)) =
mapd (close_loc y ⦿ depth) (subst_loc x u l)
apply subst_close_local; auto.Qed.(** ** Decompose opening into variable opening followed by substitution *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralluxwl,
l <> Fr x ->
(subst x u ∘ open_loc (ret (Fr x))) (w, l) =
open_loc u (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralluxwl,
l <> Fr x ->
(subst x u ∘ open_loc (ret (Fr x))) (w, l) =
open_loc u (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat l: LN neq: l <> Fr x
(subst x u ∘ open_loc (ret (Fr x))) (w, l) =
open_loc u (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat l: LN neq: l <> Fr x
open_loc (ret (Fr x)) (w, l) '{ x ~> u} =
open_loc u (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat neq: Fr x <> Fr x
open_loc (ret (Fr x)) (w, Fr x) '{ x ~> u} =
open_loc u (w, Fr x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
open_loc (ret (Fr x)) (w, Fr a) '{ x ~> u} =
open_loc u (w, Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x
open_loc (ret (Fr x)) (w, Bd n) '{ x ~> u} =
open_loc u (w, Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat neq: Fr x <> Fr x
open_loc (ret (Fr x)) (w, Fr x) '{ x ~> u} =
open_loc u (w, Fr x)
contradiction.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
open_loc (ret (Fr x)) (w, Fr a) '{ x ~> u} =
open_loc u (w, Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
ret (Fr a) '{ x ~> u} = ret (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
subst_loc x u (Fr a) = ret (Fr a)
nowrewrite subst_loc_neq.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x
open_loc (ret (Fr x)) (w, Bd n) '{ x ~> u} =
open_loc u (w, Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end '{ x ~> u} =
match n ?= w with
| Eq => u
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x ineqrw: (n ?= w) = Lt ineqp: n < w
ret (Bd n) '{ x ~> u} = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat ineqrw: (w ?= w) = Eq neq: Bd w <> Fr x
ret (Fr x) '{ x ~> u} = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) '{ x ~> u} = ret (Bd (n - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w: nat ineqrw: (w ?= w) = Eq neq: Bd w <> Fr x
ret (Fr x) '{ x ~> u} = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) '{ x ~> u} = ret (Bd (n - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x: atom w, n: nat neq: Bd n <> Fr x ineqrw: (n ?= w) = Gt ineqp: n > w
ret (Bd (n - 1)) '{ x ~> u} = ret (Bd (n - 1))
nowrewrite subst_ret, subst_loc_b.Qed.(* This theorem would be easy to prove with [subst_open_eq], but applying that theorem would introduce a local closure hypothesis for <<u>> that is not actually required for our purposes. *)(* LNgen 14: subst-intro *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallutx,
x `notin` FV t ->
t '(u) = (t '(ret (Fr x))) '{ x ~> u}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallutx,
x `notin` FV t ->
t '(u) = (t '(ret (Fr x))) '{ x ~> u}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t
t '(u) = (t '(ret (Fr x))) '{ x ~> u}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t
t '(u) = (subst x u ∘ open (ret (Fr x))) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t
bindd (open_loc u) t =
(bind (subst_loc x u) ∘ bindd (open_loc (ret (Fr x))))
t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t
bindd (open_loc u) t =
bindd (subst_loc x u ⋆ open_loc (ret (Fr x))) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t
forallw (a : LN),
(w, a) ∈d t ->
open_loc u (w, a) =
(subst_loc x u ⋆ open_loc (ret (Fr x))) (w, a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t w: nat a: LN hin: (w, a) ∈d t
open_loc u (w, a) =
(subst_loc x u ⋆ open_loc (ret (Fr x))) (w, a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t w: nat a: LN hin: (w, a) ∈d t
a <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t w: nat a: LN hin: (w, a) ∈d t H: a <> Fr x
open_loc u (w, a) =
(subst_loc x u ⋆ open_loc (ret (Fr x))) (w, a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t w: nat a: LN hin: (w, a) ∈d t
a <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t w: nat a: LN hin: a ∈ t
a <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: ~ x ∈ free t w: nat a: LN hin: a ∈ t
a <> Fr x
eapply ninf_in_neq infresh; eauto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x: atom fresh: x `notin` FV t w: nat a: LN hin: (w, a) ∈d t H: a <> Fr x
open_loc u (w, a) =
(subst_loc x u ⋆ open_loc (ret (Fr x))) (w, a)
nowrewrite <- (open_spec_local u x).Qed.(** ** Opening by a variable, followed by non-equal substitution *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu (xy : atom),
x <> y ->
LC u ->
subst x u ∘ open_loc (ret (Fr y)) =
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallu (xy : atom),
x <> y ->
LC u ->
subst x u ∘ open_loc (ret (Fr y)) =
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom neq: x <> y lc: LC u
subst x u ∘ open_loc (ret (Fr y)) =
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom neq: x <> y lc: LC u
open_loc (ret (Fr y) '{ x ~> u})
⋆5 subst_loc x u ∘ extract =
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom neq: x <> y lc: LC u
open_loc (subst_loc x u (Fr y))
⋆5 subst_loc x u ∘ extract =
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN x, y: atom neq: x <> y lc: LC u
open_loc (if x == y then u else ret (Fr y))
⋆5 subst_loc x u ∘ extract =
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract
compare values x and y.Qed.(* LNgen 11: subst-open-var *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallut (xy : atom),
x <> y ->
LC u ->
(t '(ret (Fr y))) '{ x ~> u} =
(t '{ x ~> u}) '(ret (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallut (xy : atom),
x <> y ->
LC u ->
(t '(ret (Fr y))) '{ x ~> u} =
(t '{ x ~> u}) '(ret (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
(t '(ret (Fr y))) '{ x ~> u} =
(t '{ x ~> u}) '(ret (Fr y))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
(subst x u ∘ open (ret (Fr y))) t =
(open (ret (Fr y)) ∘ subst x u) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
(bind (subst_loc x u) ∘ bindd (open_loc (ret (Fr y))))
t =
(bindd (open_loc (ret (Fr y))) ∘ bind (subst_loc x u))
t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
bindd (subst_loc x u ⋆ open_loc (ret (Fr y))) t =
bindd
((fun '(w, t) => bindd (open_loc (ret (Fr y)) ⦿ w) t)
∘ map (subst_loc x u)) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
subst_loc x u ⋆ open_loc (ret (Fr y)) =
(fun '(w, t) => bindd (open_loc (ret (Fr y)) ⦿ w) t)
∘ map (subst_loc x u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
subst x u ∘ open_loc (ret (Fr y)) =
(fun '(w, t) => bindd (open_loc (ret (Fr y)) ⦿ w) t)
∘ map (subst_loc x u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
subst x u ∘ open_loc (ret (Fr y)) =
(fun '(w, t) => bindd (open_loc (ret (Fr y)) ⦿ w) t)
∘ map (subst_loc x u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract =
(fun '(w, t) => bindd (open_loc (ret (Fr y)) ⦿ w) t)
∘ map (subst_loc x u)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U u: T LN t: U LN x, y: atom neq: x <> y lc: LC u
open_loc (ret (Fr y)) ⋆5 subst_loc x u ∘ extract =
(fun '(w, t) => bindd (open_loc (ret (Fr y)) ⦿ w) t)
∘ map (subst_loc x u)
now ext [w t'].Qed.(* LNgen 12: doesn't make sense here because it mentions concrete syntax *)(** ** Closing, followed by opening *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxwl,
(open_loc (ret (Fr x)) ⋆1 close_loc x) (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxwl,
(open_loc (ret (Fr x)) ⋆1 close_loc x) (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat l: LN
(open_loc (ret (Fr x)) ⋆1 close_loc x) (w, l) = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat l: LN
matchmatch l with
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endendwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat l: LN
matchmatch l with
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endendwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat
match (if x == x then Bd w else Fr x) with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret (Fr x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat a: atom H: a <> x
match (if x == a then Bd w else Fr a) with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret (Fr a)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat
matchmatch n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat
match (if x == x then Bd w else Fr x) with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret (Fr x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat DESTR_EQ, DESTR_EQs: x = x
match w ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd w)
| Gt => ret (Bd (w - 1))
end = ret (Fr x)
compare naturals w and w.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat a: atom H: a <> x
match (if x == a then Bd w else Fr a) with
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret (Fr a)
compare values x and a.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat
matchmatch n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endwith
| Fr x => ret (Fr x)
| Bd n =>
match n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
endend = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat ineqrw: (w ?= w) = Eq
match S w ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd (S w))
| Gt => ret (Bd (S w - 1))
end = ret (Bd w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
match S n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd (S n))
| Gt => ret (Bd (S n - 1))
end = ret (Bd n)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat ineqrw: (n ?= w) = Gt ineqp: n > w
match S n ?= w with
| Eq => ret (Fr x)
| Lt => ret (Bd (S n))
| Gt => ret (Bd (S n - 1))
end = ret (Bd n)
compare naturals (S n) and w.Qed.(* LNgen 15: open_close *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxt, ('[x] t) '(ret (Fr x)) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxt, ('[x] t) '(ret (Fr x)) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN
('[x] t) '(ret (Fr x)) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN
(open (ret (Fr x)) ∘ close x) t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN
(bindd (open_loc (ret (Fr x))) ∘ mapd (close_loc x)) t =
t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN
bindd (open_loc (ret (Fr x)) ⋆1 close_loc x) t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN w: nat a: LN H: (w, a) ∈d t
(open_loc (ret (Fr x)) ⋆1 close_loc x) (w, a) = ret a
auto using open_close_local.Qed.(** ** Opening by a LN reduces to an [mapkr] *)Definitionopen_LN_loc (u: LN): nat * LN -> LN :=
funwl => match wl with
| (w, l) =>
match l with
| Fr x => Fr x
| Bd n =>
match Nat.compare n w with
| Gt => Bd (n - 1)
| Eq => u
| Lt => Bd n
endendend.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallx : LN, open_loc (ret x) = ret ∘ open_LN_loc x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallx : LN, open_loc (ret x) = ret ∘ open_LN_loc x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN
open_loc (ret x) = ret ∘ open_LN_loc x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth: nat l: LN
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth: nat l: LN
open_loc (ret x) (depth, l) =
ret (open_LN_loc x (depth, l))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth: nat n: atom
open_loc (ret x) (depth, Fr n) =
ret (open_LN_loc x (depth, Fr n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth, n: nat
open_loc (ret x) (depth, Bd n) =
ret (open_LN_loc x (depth, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth: nat n: atom
open_loc (ret x) (depth, Fr n) =
ret (open_LN_loc x (depth, Fr n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth: nat n: atom
ret (Fr n) = ret (Fr n)
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth, n: nat
open_loc (ret x) (depth, Bd n) =
ret (open_LN_loc x (depth, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: LN depth, n: nat
match n ?= depth with
| Eq => ret x
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end =
ret
match n ?= depth with
| Eq => x
| Lt => Bd n
| Gt => Bd (n - 1)
end
compare naturals n and depth.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll, open (ret l) = mapd (open_LN_loc l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralll, open (ret l) = mapd (open_LN_loc l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN
open (ret l) = mapd (open_LN_loc l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN
bindd (open_loc (ret l)) = mapd (open_LN_loc l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN
bindd (open_loc (ret l)) t = mapd (open_LN_loc l) t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN
forallw (a : LN),
(w, a) ∈d t ->
open_loc (ret l) (w, a) = ret (open_LN_loc l (w, a))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN w: nat l': LN l'in: (w, l') ∈d t
open_loc (ret l) (w, l') = ret (open_LN_loc l (w, l'))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN w: nat n: atom l'in: (w, Fr n) ∈d t
open_loc (ret l) (w, Fr n) =
ret (open_LN_loc l (w, Fr n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN w, n: nat l'in: (w, Bd n) ∈d t
open_loc (ret l) (w, Bd n) =
ret (open_LN_loc l (w, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN w: nat n: atom l'in: (w, Fr n) ∈d t
open_loc (ret l) (w, Fr n) =
ret (open_LN_loc l (w, Fr n))
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN w, n: nat l'in: (w, Bd n) ∈d t
open_loc (ret l) (w, Bd n) =
ret (open_LN_loc l (w, Bd n))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U l: LN t: U LN w, n: nat l'in: (w, Bd n) ∈d t
match n ?= w with
| Eq => ret l
| Lt => ret (Bd n)
| Gt => ret (Bd (n - 1))
end =
ret
match n ?= w with
| Eq => l
| Lt => Bd n
| Gt => Bd (n - 1)
end
compare naturals n and w.Qed.(** ** Opening, followed by closing *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxwl,
l <> Fr x ->
(close_loc x ⋆1 open_LN_loc (Fr x)) (w, l) = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxwl,
l <> Fr x ->
(close_loc x ⋆1 open_LN_loc (Fr x)) (w, l) = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat l: LN neq: l <> Fr x
(close_loc x ⋆1 open_LN_loc (Fr x)) (w, l) = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat l: LN neq: l <> Fr x
matchmatch l with
| Fr x => Fr x
| Bd n =>
match n ?= w with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endendwith
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endend = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat l: LN neq: l <> Fr x
matchmatch l with
| Fr x => Fr x
| Bd n =>
match n ?= w with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endendwith
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endend = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat neq: Fr x <> Fr x
(if x == x then Bd w else Fr x) = Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
(if x == a then Bd w else Fr a) = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat neq: Bd n <> Fr x
matchmatch n ?= w with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endwith
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endend = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat neq: Fr x <> Fr x
(if x == x then Bd w else Fr x) = Fr x
contradiction.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
(if x == a then Bd w else Fr a) = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat a: atom neq: Fr a <> Fr x H: a <> x
(if x == a then Bd w else Fr a) = Fr a
nowcompare values x and a.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat neq: Bd n <> Fr x
matchmatch n ?= w with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endwith
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endend = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat neq: Bd n <> Fr x
matchmatch n ?= w with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endwith
| Fr y => if x == y then Bd w else Fr y
| Bd n =>
match n ?= w with
| Lt => Bd n
| _ => Bd (S n)
endend = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w: nat ineqrw: (w ?= w) = Eq neq: Bd w <> Fr x
(if x == x then Bd w else Fr x) = Bd w
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat neq: Bd n <> Fr x ineqrw: (n ?= w) = Gt ineqp: n > w
match n - 1 ?= w with
| Lt => Bd (n - 1)
| _ => Bd (S (n - 1))
end = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom w, n: nat neq: Bd n <> Fr x ineqrw: (n ?= w) = Gt ineqp: n > w
match n - 1 ?= w with
| Lt => Bd (n - 1)
| _ => Bd (S (n - 1))
end = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxt, ~ x ∈ free t -> '[x] (t '(ret (Fr x))) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallxt, ~ x ∈ free t -> '[x] (t '(ret (Fr x))) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t
'[x] (t '(ret (Fr x))) = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t
(close x ∘ open (ret (Fr x))) t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t
(close x ∘ mapd (open_LN_loc (Fr x))) t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t
(mapd (close_loc x) ∘ mapd (open_LN_loc (Fr x))) t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t
mapd (close_loc x ⋆1 open_LN_loc (Fr x)) t = t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t
forall (e : nat) (a : LN),
(e, a) ∈d t ->
(close_loc x ⋆1 open_LN_loc (Fr x)) (e, a) = a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: (w, l) ∈d t
(close_loc x ⋆1 open_LN_loc (Fr x)) (w, l) = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: (w, l) ∈d t
l <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: (w, l) ∈d t H: l <> Fr x
(close_loc x ⋆1 open_LN_loc (Fr x)) (w, l) = l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: (w, l) ∈d t
l <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: (w, l) ∈d t
Fr x <> l
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: l ∈ t
Fr x <> l
eauto using (ninf_in_neq (T := T)).
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t: U LN fresh: ~ x ∈ free t w: nat l: LN lin: (w, l) ∈d t H: l <> Fr x
(close_loc x ⋆1 open_LN_loc (Fr x)) (w, l) = l
nowapply close_open_local.Qed.(** ** Opening and local closure *)(**************************************************************************)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntu, LC u -> LCn n t -> LCn (n - 1) (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntu, LC u -> LCn n t -> LCn (n - 1) (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: LC u lct: LCn n t
LCn (n - 1) (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN Hin: (w, l) ∈d t '(u)
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN Hin: existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2: nat l1: LN h1: (n1, l1) ∈d t h2: (n2, l) ∈d open_loc u (n1, l1) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2: nat n0: atom h1: (n1, Fr n0) ∈d t h2: (n2, l) ∈d open_loc u (n1, Fr n0) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2, n0: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d open_loc u (n1, Bd n0) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2: nat n0: atom h1: (n1, Fr n0) ∈d t h2: (n2, l) ∈d open_loc u (n1, Fr n0) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2: nat n0: atom h1: (n1, Fr n0) ∈d t h2: (n2, l) ∈d ret (Fr n0) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2: nat n0: atom h1: (n1, Fr n0) ∈d t h2: n2 = Ƶ /\ l = Fr n0 h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) n1: nat n0: atom h1: (n1, Fr n0) ∈d t
lc_loc (n - 1) (n1 ● Ƶ, Fr n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) n1: nat n0: atom h1: (n1, Fr n0) ∈d t
True
trivial.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl, (w, l) ∈d t -> lc_loc n (w, l) w: nat l: LN n1, n2, n0: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d open_loc u (n1, Bd n0) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d open_loc u (n1, Bd n0) h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: (n2, l)
∈d match n0 ?= n1 with
| Eq => u
| Lt => ret (Bd n0)
| Gt => ret (Bd (n0 - 1))
end h3: w = n1 ● n2
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d ret (Bd n0) h3: w = n1 ● n2 ineqrw: (n0 ?= n1) = Lt ineqp: n0 < n1
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1: nat lct: lc_loc n (n1, Bd n1) l: LN n2: nat h1: (n1, Bd n1) ∈d t h2: (n2, l) ∈d u ineqrw: (n1 ?= n1) = Eq
lc_loc (n - 1) (n1 ● n2, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d ret (Bd (n0 - 1)) h3: w = n1 ● n2 ineqrw: (n0 ?= n1) = Gt ineqp: n0 > n1
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d ret (Bd n0) h3: w = n1 ● n2 ineqrw: (n0 ?= n1) = Lt ineqp: n0 < n1
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) h1: (n1, Bd n0) ∈d t ineqrw: (n0 ?= n1) = Lt ineqp: n0 < n1
lc_loc (n - 1) (n1 ● Ƶ, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) h1: (n1, Bd n0) ∈d t ineqrw: (n0 ?= n1) = Lt ineqp: n0 < n1
n0 < (n1 ● Ƶ) + (n - 1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) h1: (n1, Bd n0) ∈d t ineqrw: (n0 ?= n1) = Lt ineqp: n0 < n1
n0 < n1 + 0 + (n - 1)
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1: nat lct: lc_loc n (n1, Bd n1) l: LN n2: nat h1: (n1, Bd n1) ∈d t h2: (n2, l) ∈d u ineqrw: (n1 ?= n1) = Eq
lc_loc (n - 1) (n1 ● n2, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN l: LN n2: nat lcu: lc_loc 0 (n2, l) n1: nat lct: lc_loc n (n1, Bd n1) h1: (n1, Bd n1) ∈d t h2: (n2, l) ∈d u ineqrw: (n1 ?= n1) = Eq
lc_loc (n - 1) (n1 ● n2, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN l: LN n2: nat lcu: match l with
| Fr _ => True
| Bd n => n < n2 + 0end n1: nat lct: n1 < n1 + n h1: (n1, Bd n1) ∈d t h2: (n2, l) ∈d u ineqrw: (n1 ?= n1) = Eq
match l with
| Fr _ => True
| Bd n0 => n0 < (n1 ● n2) + (n - 1)
end
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN n0, n2: nat lcu: n0 < n2 + 0 n1: nat lct: n1 < n1 + n h1: (n1, Bd n1) ∈d t h2: (n2, Bd n0) ∈d u ineqrw: (n1 ?= n1) = Eq
n0 < (n1 ● n2) + (n - 1)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN n0, n2: nat lcu: n0 < n2 + 0 n1: nat lct: n1 < n1 + n h1: (n1, Bd n1) ∈d t h2: (n2, Bd n0) ∈d u ineqrw: (n1 ?= n1) = Eq
n0 < n1 + n2 + (n - 1)
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: (n2, l) ∈d ret (Bd (n0 - 1)) h3: w = n1 ● n2 ineqrw: (n0 ?= n1) = Gt ineqp: n0 > n1
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) w: nat l: LN n2: nat h1: (n1, Bd n0) ∈d t h2: n2 = Ƶ /\ l = Bd (n0 - 1) h3: w = n1 ● n2 ineqrw: (n0 ?= n1) = Gt ineqp: n0 > n1
lc_loc (n - 1) (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) n1, n0: nat lct: lc_loc n (n1, Bd n0) h1: (n1, Bd n0) ∈d t ineqrw: (n0 ?= n1) = Gt ineqp: n0 > n1
lc_loc (n - 1) (n1 ● Ƶ, Bd (n0 - 1))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN lcu: forallwl,
(w, l) ∈d u ->
match l with
| Fr _ => True
| Bd n => n < w + 0end n1, n0: nat lct: n0 < n1 + n h1: (n1, Bd n0) ∈d t ineqrw: (n0 ?= n1) = Gt ineqp: n0 > n1
n0 - 1 < (n1 ● Ƶ) + (n - 1)
unfold_lia.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntu,
n > 0 -> LC u -> LCn (n - 1) (t '(u)) -> LCn n t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntu,
n > 0 -> LC u -> LCn (n - 1) (t '(u)) -> LCn n t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: LC u lct: LCn (n - 1) (t '(u))
LCn n t
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(w, l) ∈d t '(u) -> lc_loc (n - 1) (w, l)
forallwl, (w, l) ∈d t -> lc_loc n (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(w, l) ∈d t '(u) -> lc_loc (n - 1) (w, l) w: nat l: LN Hin: (w, l) ∈d t
lc_loc n (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat l: LN Hin: (w, l) ∈d t
lc_loc n (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat n0: atom Hin: (w, Fr n0) ∈d t
lc_loc n (w, Fr n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat n0: atom Hin: (w, Fr n0) ∈d t
lc_loc n (w, Fr n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat n0: atom Hin: (w, Fr n0) ∈d t
True
trivial.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat ineqrw: (w ?= w) = Eq Hin: (w, Bd w) ∈d t
lc_loc n (w, Bd w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
lc_loc (n - 1) (w, Bd n0) -> lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
lc_loc (n - 1) (w, Bd n0) -> lc_loc n (w, Bd n0)
cbn; unfold_lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\ w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
(w, Bd n0) ∈d t /\
(Ƶ, Bd n0) ∈d open_loc u (w, Bd n0) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
(Ƶ, Bd n0) ∈d open_loc u (w, Bd n0) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Lt ineqp: n0 < w
(Ƶ, Bd n0)
∈d match n0 ?= w with
| Eq => u
| Lt => ret (Bd n0)
| Gt => ret (Bd (n0 - 1))
end /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: Lt = Lt ineqp: n0 < w ineqrw0: (n0 ?= w) = Lt ineqp0: n0 < w
(Ƶ, Bd n0) ∈d ret (Bd n0) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd n0) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) -> lc_loc (n - 1) (w, Bd n0) Hin: (w, Bd n0) ∈d t ineqrw: Lt = Lt ineqp: n0 < w ineqrw0: (n0 ?= w) = Lt ineqp0: n0 < w
(Ƶ = Ƶ /\ Bd n0 = Bd n0) /\ w = w ● Ƶ
now simpl_monoid.}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat ineqrw: (w ?= w) = Eq Hin: (w, Bd w) ∈d t
lc_loc n (w, Bd w)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w: nat ineqrw: (w ?= w) = Eq Hin: (w, Bd w) ∈d t
w < w + n
unfold_lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
lc_loc n (w, Bd n0)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) lct: forallwl,
(existsn1n2l1,
(n1, l1) ∈d t /\
(n2, l) ∈d open_loc u (n1, l1) /\ w = n1 ● n2) ->
lc_loc (n - 1) (w, l) w, n0: nat Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
n0 < w + n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
n0 < w + n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
lc_loc (n - 1) (w, Bd (n0 - 1)) -> n0 < w + n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
lc_loc (n - 1) (w, Bd (n0 - 1)) -> n0 < w + n
cbn; unfold_lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
(w, Bd n0) ∈d t /\
(Ƶ, Bd (n0 - 1)) ∈d open_loc u (w, Bd n0) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
(Ƶ, Bd (n0 - 1)) ∈d open_loc u (w, Bd n0) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: (n0 ?= w) = Gt ineqp: n0 > w
(Ƶ, Bd (n0 - 1))
∈d match n0 ?= w with
| Eq => u
| Lt => ret (Bd n0)
| Gt => ret (Bd (n0 - 1))
end /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: Gt = Gt ineqp: n0 > w ineqrw0: (n0 ?= w) = Gt ineqp0: n0 > w
(Ƶ, Bd (n0 - 1)) ∈d ret (Bd (n0 - 1)) /\ w = w ● Ƶ
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN u: T LN ngt: n > 0 lcu: forallwl, (w, l) ∈d u -> lc_loc 0 (w, l) w, n0: nat lct: (existsn1n2l1,
(n1, l1) ∈d t /\
(n2, Bd (n0 - 1)) ∈d open_loc u (n1, l1) /\
w = n1 ● n2) ->
lc_loc (n - 1) (w, Bd (n0 - 1)) Hin: (w, Bd n0) ∈d t ineqrw: Gt = Gt ineqp: n0 > w ineqrw0: (n0 ?= w) = Gt ineqp0: n0 > w
(Ƶ = Ƶ /\ Bd (n0 - 1) = Bd (n0 - 1)) /\ w = w ● Ƶ
now simpl_monoid.}Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntu,
n > 0 -> LC u -> LCn n t <-> LCn (n - 1) (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntu,
n > 0 -> LC u -> LCn n t <-> LCn (n - 1) (t '(u))
intros; intuition (eauto using open_lcn_1, open_lcn_2).Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntx,
n > 0 -> LCn n t <-> LCn (n - 1) (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallntx,
n > 0 -> LCn n t <-> LCn (n - 1) (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
LCn n t <-> LCn (n - 1) (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
n > 0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
LC (ret (Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
LC (ret (Fr x))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
forallwl, (w, l) ∈d ret (Fr x) -> lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0 w: nat l: LN hin: (w, l) ∈d ret (Fr x)
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0 w: nat l: LN hin: w = Ƶ /\ l = Fr x
lc_loc 0 (w, l)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
lc_loc 0 (Ƶ, Fr x)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U n: nat t: U LN x: atom H: n > 0
True
trivial.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, LC u -> LCn 1 t <-> LC (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltu, LC u -> LCn 1 t <-> LC (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN H: LC u
LCn 1 t <-> LC (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN H: LC u
LCn 1 t <-> LCn 0 (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN H: LC u
LCn (S (1 - 1)) t <-> LCn (1 - 1) (t '(u))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN u: T LN H: LC u
LCn (S (1 - 1)) t <-> LCn 1 t
reflexivity.Qed.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, LCn 1 t <-> LC (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
foralltx, LCn 1 t <-> LC (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
LCn 1 t <-> LC (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
LCn 1 t <-> LCn 0 (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
LCn (S (1 - 1)) t <-> LCn (1 - 1) (t '(ret (Fr x)))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U t: U LN x: atom
LCn (S (1 - 1)) t <-> LCn 1 t
reflexivity.Qed.(** ** Injectivity of opening *)(******************************************************************************)(* LNgen 17: open-inj *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallx (tu : U LN),
x `notin` (FV t ∪ FV u) ->
t '(ret (Fr x)) = u '(ret (Fr x)) -> t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallx (tu : U LN),
x `notin` (FV t ∪ FV u) ->
t '(ret (Fr x)) = u '(ret (Fr x)) -> t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: t '(ret (Fr x)) = u '(ret (Fr x))
t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u
t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
ret (open_LN_loc (Fr x) (e, a1)) =
ret (open_LN_loc (Fr x) (e, a2))
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) Hneq: a1 <> Fr x /\ a2 <> Fr x
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a1 <> Fr x /\ a2 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) Hneq: a1 <> Fr x /\ a2 <> Fr x
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) H: a1 <> Fr x H0: a2 <> Fr x
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match a1 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend =
match a2 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) H: a1 <> Fr x H0: a2 <> Fr x
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n: atom a2: LN Hint1: (e, Fr n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: Fr n =
match a2 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, a2) H: Fr n <> Fr x H0: a2 <> Fr x
Fr n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat a2: LN Hint1: (e, Bd n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end =
match a2 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, a2) H: Bd n <> Fr x H0: a2 <> Fr x
Bd n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n: atom a2: LN Hint1: (e, Fr n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: Fr n =
match a2 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, a2) H: Fr n <> Fr x H0: a2 <> Fr x
Fr n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n, n0: atom Hint1: (e, Fr n) ∈d t Hint2: (e, Fr n0) ∈d u Heq_loc: Fr n = Fr n0 Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, Fr n0) H: Fr n <> Fr x H0: Fr n0 <> Fr x
Fr n = Fr n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n: atom n0: nat Hint1: (e, Fr n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr n =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Fr n <> Fr x H0: Bd n0 <> Fr x
Fr n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n, n0: atom Hint1: (e, Fr n) ∈d t Hint2: (e, Fr n0) ∈d u Heq_loc: Fr n = Fr n0 Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, Fr n0) H: Fr n <> Fr x H0: Fr n0 <> Fr x
Fr n = Fr n0
assumption.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n: atom n0: nat Hint1: (e, Fr n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr n =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Fr n <> Fr x H0: Bd n0 <> Fr x
Fr n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n: atom n0: nat Hint1: (e, Fr n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr n =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Fr n <> Fr x H0: Bd n0 <> Fr x
Fr n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat n: atom n0: nat Hint1: (e, Fr n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr n =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Fr n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Fr n <> Fr x H0: Bd n0 <> Fr x
False
destruct (compare n0 e); easy.}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat a2: LN Hint1: (e, Bd n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end =
match a2 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, a2) H: Bd n <> Fr x H0: a2 <> Fr x
Bd n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat a2: LN Hint1: (e, Bd n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end =
match a2 with
| Fr x => Fr x
| Bd n =>
match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
endend Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, a2) H: Bd n <> Fr x H0: a2 <> Fr x
Bd n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat n0: atom Hint1: (e, Bd n) ∈d t Hint2: (e, Fr n0) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end = Fr n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Fr n0) H: Bd n <> Fr x H0: Fr n0 <> Fr x
Bd n = Fr n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x
Bd n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat n0: atom Hint1: (e, Bd n) ∈d t Hint2: (e, Fr n0) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end = Fr n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Fr n0) H: Bd n <> Fr x H0: Fr n0 <> Fr x
Bd n = Fr n0
compare naturals n and e; false.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x
Bd n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Eq => Fr x
| Lt => Bd n
| Gt => Bd (n - 1)
end =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x
Bd n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq
e = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n = Bd n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (n0 ?= e) = Lt ineqp0: n0 < e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd e) ∈d u Heq_loc: Bd n = Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd e) H: Bd n <> Fr x H0: Bd e <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (e ?= e) = Eq
n = e
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n = Bd (n0 - 1) Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (n0 ?= e) = Gt ineqp0: n0 > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n = Bd n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (n0 ?= e) = Lt ineqp0: n0 < e
n = n0
nowinversion Heq_loc.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd e) ∈d u Heq_loc: Bd n = Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd e) H: Bd n <> Fr x H0: Bd e <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (e ?= e) = Eq
n = e
false.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n = Bd (n0 - 1) Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (n0 ?= e) = Gt ineqp0: n0 > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd n = Bd (n0 - 1) Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Lt ineqp: n < e ineqrw0: (n0 ?= e) = Gt ineqp0: n0 > e H2: n = n0 - 1
n0 - 1 = n0
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq
e = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq
e = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x = Bd n0 H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq ineqrw0: (n0 ?= e) = Lt ineqp: n0 < e
e = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x = Bd (n0 - 1) H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq ineqrw0: (n0 ?= e) = Gt ineqp: n0 > e
e = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x = Bd n0 H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq ineqrw0: (n0 ?= e) = Lt ineqp: n0 < e
e = n0
nowinversion Heq_loc.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n0: nat Hint1: (e, Bd e) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Fr x = Bd (n0 - 1) H: Bd e <> Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd e) =
open_loc (ret (Fr x)) (e, Bd n0) H0: Bd n0 <> Fr x ineqrw: (e ?= e) = Eq ineqrw0: (n0 ?= e) = Gt ineqp: n0 > e
e = n0
false.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) =
match n0 ?= e with
| Eq => Fr x
| Lt => Bd n0
| Gt => Bd (n0 - 1)
end Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) = Bd n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (n0 ?= e) = Lt ineqp0: n0 < e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd e) ∈d u Heq_loc: Bd (n - 1) = Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd e) H: Bd n <> Fr x H0: Bd e <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (e ?= e) = Eq
n = e
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) = Bd (n0 - 1) Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (n0 ?= e) = Gt ineqp0: n0 > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) = Bd n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (n0 ?= e) = Lt ineqp0: n0 < e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) = Bd n0 Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (n0 ?= e) = Lt ineqp0: n0 < e H2: n - 1 = n0
n = n - 1
lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd e) ∈d u Heq_loc: Bd (n - 1) = Fr x Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd e) H: Bd n <> Fr x H0: Bd e <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (e ?= e) = Eq
n = e
false.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) = Bd (n0 - 1) Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (n0 ?= e) = Gt ineqp0: n0 > e
n = n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e, n, n0: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Bd n0) ∈d u Heq_loc: Bd (n - 1) = Bd (n0 - 1) Heq_loc2: open_loc (ret (Fr x)) (e, Bd n) =
open_loc (ret (Fr x)) (e, Bd n0) H: Bd n <> Fr x H0: Bd n0 <> Fr x ineqrw: (n ?= e) = Gt ineqp: n > e ineqrw0: (n0 ?= e) = Gt ineqp0: n0 > e H2: n - 1 = n0 - 1
n = n0
lia.}}}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a1 <> Fr x /\ a2 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a1 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a2 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a1 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) cut: x `notin` FV t
a1 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) cut: ~ x ∈ free t
a1 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: a1 ∈ t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) cut: ~ x ∈ free t
a1 <> Fr x
eapply ninf_in_neq in Hint1; eauto.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2)
a2 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) cut: x `notin` FV u
a2 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) cut: ~ x ∈ free u
a2 <> Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN Hnin: x `notin` (FV t ∪ FV u) Heq: mapd (open_LN_loc (Fr x)) t =
mapd (open_LN_loc (Fr x)) u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: a2 ∈ u Heq_loc: open_LN_loc (Fr x) (e, a1) =
open_LN_loc (Fr x) (e, a2) Heq_loc2: open_loc (ret (Fr x)) (e, a1) =
open_loc (ret (Fr x)) (e, a2) cut: ~ x ∈ free u
a2 <> Fr x
eapply ninf_in_neq in Hint2; eauto.Qed.(* LNgen 18: close-inj *)
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallx (tu : U LN), '[x] t = '[x] u -> t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U
forallx (tu : U LN), '[x] t = '[x] u -> t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u
t = u
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u
forall (e : nat) (a1a2 : LN),
(e, a1) ∈d t ->
(e, a2) ∈d u ->
close_loc x (e, a1) = close_loc x (e, a2) -> a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: close_loc x (e, a1) = close_loc x (e, a2)
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a1, a2: LN Hint1: (e, a1) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match a1 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend
a1 = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN Hint1: (e, Fr x) ∈d t Hint2: (e, a2) ∈d u Heq_loc: (if x == x then Bd e else Fr x) =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend
Fr x = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, a2) ∈d u Heq_loc: (if x == a then Bd e else Fr a) =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend H: a <> x
Fr a = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend
Bd n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN Hint1: (e, Fr x) ∈d t Hint2: (e, a2) ∈d u Heq_loc: (if x == x then Bd e else Fr x) =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend
Fr x = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN Hint1: (e, Fr x) ∈d t Hint2: (e, a2) ∈d u DESTR_EQ: x = x Heq_loc: Bd e =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend DESTR_EQs: x = x
Fr x = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat Hint1: (e, Fr x) ∈d t Hint2: (e, Fr x) ∈d u DESTR_EQ: x = x Heq_loc: Bd e = (if x == x then Bd e else Fr x) DESTR_EQs: x = x
Fr x = Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat Hint1: (e, Fr x) ∈d t a: atom Hint2: (e, Fr a) ∈d u DESTR_EQ: x = x Heq_loc: Bd e = (if x == a then Bd e else Fr a) DESTR_EQs: x = x H: a <> x
Fr x = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat Hint1: (e, Fr x) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_EQ: x = x Heq_loc: Bd e =
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end DESTR_EQs: x = x
Fr x = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat Hint1: (e, Fr x) ∈d t Hint2: (e, Fr x) ∈d u DESTR_EQ: x = x Heq_loc: Bd e = (if x == x then Bd e else Fr x) DESTR_EQs: x = x
Fr x = Fr x
reflexivity.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat Hint1: (e, Fr x) ∈d t a: atom Hint2: (e, Fr a) ∈d u DESTR_EQ: x = x Heq_loc: Bd e = (if x == a then Bd e else Fr a) DESTR_EQs: x = x H: a <> x
Fr x = Fr a
compare values x and a.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat Hint1: (e, Fr x) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_EQ: x = x Heq_loc: Bd e =
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end DESTR_EQs: x = x
Fr x = Bd n
compare naturals n and e;
inversion Heq_loc; lia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, a2) ∈d u Heq_loc: (if x == a then Bd e else Fr a) =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend H: a <> x
Fr a = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, a2) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend H, DESTR_NEQs: a <> x
Fr a = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, Fr x) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = (if x == x then Bd e else Fr x) H, DESTR_NEQs: a <> x
Fr a = Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t a0: atom Hint2: (e, Fr a0) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = (if x == a0 then Bd e else Fr a0) H, DESTR_NEQs: a <> x H0: a0 <> x
Fr a = Fr a0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a =
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end H, DESTR_NEQs: a <> x
Fr a = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t a0: atom Hint2: (e, Fr a0) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = (if x == a0 then Bd e else Fr a0) H, DESTR_NEQs: a <> x H0: a0 <> x
Fr a = Fr a0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a =
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end H, DESTR_NEQs: a <> x
Fr a = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a =
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end H, DESTR_NEQs: a <> x
Fr a = Bd n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd n H, DESTR_NEQs: a <> x ineqrw: (n ?= e) = Lt ineqp: n < e
a = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, Bd e) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S e) H, DESTR_NEQs: a <> x ineqrw: (e ?= e) = Eq
a = e
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S n) H, DESTR_NEQs: a <> x ineqrw: (n ?= e) = Gt ineqp: n > e
a = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd n H, DESTR_NEQs: a <> x ineqrw: (n ?= e) = Lt ineqp: n < e
a = n
false.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, Bd e) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S e) H, DESTR_NEQs: a <> x ineqrw: (e ?= e) = Eq
a = e
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S n) H, DESTR_NEQs: a <> x ineqrw: (n ?= e) = Gt ineqp: n > e
a = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t Hint2: (e, Bd e) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S e) H, DESTR_NEQs: a <> x ineqrw: (e ?= e) = Eq
a = e
false.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S n) H, DESTR_NEQs: a <> x ineqrw: (n ?= e) = Gt ineqp: n > e
a = n
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a: atom Hint1: (e, Fr a) ∈d t n: nat Hint2: (e, Bd n) ∈d u DESTR_NEQ: x <> a Heq_loc: Fr a = Bd (S n) H, DESTR_NEQs: a <> x ineqrw: (n ?= e) = Gt ineqp: n > e
a = n
false.}
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e: nat a2: LN n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, a2) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end =
match a2 with
| Fr y => if x == y then Bd e else Fr y
| Bd n =>
match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
endend
Bd n = a2
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Fr x) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end = (if x == x then Bd e else Fr x)
Bd n = Fr x
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t a: atom Hint2: (e, Fr a) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end = (if x == a then Bd e else Fr a) H: a <> x
Bd n = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t n0: nat Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end =
match n0 ?= e with
| Lt => Bd n0
| _ => Bd (S n0)
end
Bd n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t Hint2: (e, Fr x) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end = (if x == x then Bd e else Fr x)
Bd n = Fr x
compare naturals n and e;
compare values x and x;
inversion Heq_loc; trylia.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t a: atom Hint2: (e, Fr a) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end = (if x == a then Bd e else Fr a) H: a <> x
Bd n = Fr a
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t n0: nat Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end =
match n0 ?= e with
| Lt => Bd n0
| _ => Bd (S n0)
end
Bd n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t a: atom Hint2: (e, Fr a) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end = (if x == a then Bd e else Fr a) H: a <> x
Bd n = Fr a
compare naturals n and e;
compare values x and a.
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t n0: nat Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end =
match n0 ?= e with
| Lt => Bd n0
| _ => Bd (S n0)
end
Bd n = Bd n0
T: Type -> Type Return_T: Return T Map_T: Map T Bind_TT: Bind T T Traverse_T: Traverse T Mapd_T: Mapd nat T Bindt_TT: Bindt T T U: Type -> Type Bindd_T: Bindd nat T U Mapdt_T: Mapdt nat T Binddt_TT: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Map_U: Map U Bind_TU: Bind T U Traverse_U: Traverse U Mapd_U: Mapd nat U Bindt_TU: Bindt T U Bindd_TU: Bindd nat T U Mapdt_U: Mapdt nat U Binddt_TU: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Monad_inst: DecoratedTraversableMonad nat T Module_inst: DecoratedTraversableRightPreModule nat T
U x: atom t, u: U LN premise: '[x] t = '[x] u e, n: nat Hint1: (e, Bd n) ∈d t n0: nat Hint2: (e, Bd n0) ∈d u Heq_loc: match n ?= e with
| Lt => Bd n
| _ => Bd (S n)
end =
match n0 ?= e with
| Lt => Bd n0
| _ => Bd (S n0)
end
Bd n = Bd n0
compare naturals n and e;
compare naturals n0 and e;
inversion Heq_loc; trylia; easy.}Qed.Endlocally_nameless_metatheory.