We reason about a translation between syntax with de Bruijn indices and locally nameless variables. This consists of a function which, given a locally closed term t, outputs a term of the same shape whose leaves are de Bruijn indices and a "key": some arbitrary permutation of the names of free variables in t. Another function accepts a key and a de Bruijn term and computes a locally nameless term of the same shape. The two functions are shown to be inverses.
Table of Contents :depth: 2
Since we are using the Kleisli typeclass hierarchy, we import modules under the namespaces Classes.Kleisli and Theory.Kleisli.
From Tealeaves Require Export Backends.LN Backends.DB.DB Backends.Adapters.Key Classes.Kleisli.DecoratedTraversableMonad Functors.Option. Import DecoratedTraversableMonad.UsefulInstances. #[local] Generalizable Variables W T U. #[local] Open Scope nat_scope.
Definition toLN_loc (k: key) '(depth, ix) : option LN := if bound_b ix depth == true then Some (Bd ix) else map (F := option) Fr (getName k (ix - depth)). Definition toLN `{Mapdt_inst: Mapdt nat T} (k: key): T nat -> option (T LN) := mapdt (G := option) (toLN_loc k).
Section theory. 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 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 `{Monad_inst: ! DecoratedTraversableMonad nat 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 `{Module_inst: ! DecoratedTraversableRightPreModule nat T U (unit := Monoid_unit_zero) (op := Monoid_op_plus)}.T: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T Uforall (k : key) (d n : nat), toLN_loc k (d, n) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T Uforall (k : key) (d n : nat), toLN_loc k (d, n) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nattoLN_loc k (d, n) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat(if bound_b n d == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat(if PeanoNat.Nat.ltb n (d + 0) == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat(if PeanoNat.Nat.ltb n d == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
b: bool
Heqb: b = Nat.ltb n d(if b == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
b: bool
Heqb: Nat.ltb n d = b(if b == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: Nat.ltb n d = true(if true == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: Nat.ltb n d = false(if false == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: Nat.ltb n d = true(if true == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: Nat.ltb n d = trueSome (Bd n) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: n < dSome (Bd n) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: n < d
contra: Some (Bd n) = Nonen >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: n < d
contra: n >= d /\ ~ n - d < length kSome (Bd n) = Nonefalse.T: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: n < d
contra: Some (Bd n) = Nonen >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: n < d
contra: n >= d /\ ~ n - d < length kSome (Bd n) = Nonelia.T: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: n < d
contra: n >= d /\ ~ n - d < length kFalseT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: Nat.ltb n d = false(if false == true then Some (Bd n) else map Fr (getName k (n - d))) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: Nat.ltb n d = falsemap Fr (getName k (n - d)) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: d <= nmap Fr (getName k (n - d)) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: d <= ngetName k (n - d) = None <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: d <= n~ contains_ix_upto (n - d) k <-> n >= d /\ ~ n - d < length ksplit; now 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
Bindd_T: Bindd nat T T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
d, n: nat
Heqb: d <= n~ n - d < length k <-> n >= d /\ ~ n - d < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T Uforall (k : key) (t : U nat), toLN k t = None <-> ~ cl_at (length k) tT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T Uforall (k : key) (t : U nat), toLN k t = None <-> ~ cl_at (length k) tT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nattoLN k t = None <-> ~ cl_at (length k) tT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nattoLN k t = None <-> (exists d n : nat, element_ctx_of (d, n) t /\ ~ cl_at_loc (length k) (d, 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
Bindd_T: Bindd nat T T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U natmapdt (toLN_loc k) t = None <-> (exists d n : nat, element_ctx_of (d, n) t /\ ~ cl_at_loc (length k) (d, 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
Bindd_T: Bindd nat T T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat(exists e a : nat, element_ctx_of (e, a) t /\ toLN_loc k (e, a) = None) <-> (exists d n : nat, element_ctx_of (d, n) t /\ ~ cl_at_loc (length k) (d, 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
Bindd_T: Bindd nat T T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat(exists e a : nat, element_ctx_of (e, a) t /\ a >= e /\ ~ a - e < length k) <-> (exists d n : nat, element_ctx_of (d, n) t /\ ~ cl_at_loc (length k) (d, 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
Bindd_T: Bindd nat T T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat(exists e a : nat, element_ctx_of (e, a) t /\ a >= e /\ ~ a - e < length k) <-> (exists d n : nat, element_ctx_of (d, n) t /\ ~ n < d + length k)T: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat
e, a: nat
Hin: element_ctx_of (e, a) t
Hspec: a >= e /\ ~ a - e < length kexists d n : nat, element_ctx_of (d, n) t /\ ~ n < d + length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat
e, a: nat
Hin: element_ctx_of (e, a) t
Hspec: ~ a < e + length kexists e a : nat, element_ctx_of (e, a) t /\ a >= e /\ ~ a - e < length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat
e, a: nat
Hin: element_ctx_of (e, a) t
Hspec: a >= e /\ ~ a - e < length kexists d n : nat, element_ctx_of (d, n) t /\ ~ n < d + length klia.T: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat
e, a: nat
Hin: element_ctx_of (e, a) t
Hspec: a >= e /\ ~ a - e < length k~ a < e + length kT: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat
e, a: nat
Hin: element_ctx_of (e, a) t
Hspec: ~ a < e + length kexists e a : nat, element_ctx_of (e, a) t /\ a >= e /\ ~ a - e < length klia. Qed. End theory.T: Type -> Type
Return_T: Return 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 T
Mapdt_T: Mapdt nat T
Binddt_TT: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U: Map U
Bind_TU: Bind T U
Traverse_U: Traverse U
Mapd_U: Mapd nat U
Bindt_TU: Bindt T U
Bindd_TU: Bindd nat T U
Mapdt_U: Mapdt nat U
Binddt_TU: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: key
t: U nat
e, a: nat
Hin: element_ctx_of (e, a) t
Hspec: ~ a < e + length ka >= e /\ ~ a - e < length k