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.
From Tealeaves.Misc Require Export
  NaturalNumbers
  Iterate.
From Tealeaves.Theory Require Export
  DecoratedTraversableMonad.

Import DecoratedContainerMonad.
Import Kleisli.DecoratedTraversableMonad.
Import Kleisli.Theory.DecoratedTraversableFunctor.
Import DecoratedTraversableMonad.UsefulInstances.

Import PeanoNat.
#[local] Open Scope nat_scope.

Import DecoratedContainerFunctor.Notations.
Import DecoratedMonad.Notations.
Import Kleisli.Comonad.Notations.
Import Monoid.Notations.

Implicit Types (ρ: nat -> nat).

#[local] Generalizable Variables W T U.

(** * Closure *)
(**********************************************************************)
Section section.

  Context
    `{ret_inst: Return T}
    `{Mapd_T_inst: Mapd nat T}
    `{Mapd_U_inst: Mapd nat U}
    `{Mapdt_U_inst: Mapdt nat U}
    `{Bindd_U_inst: Bindd nat T U}
    `{ToCtxset_U_inst: ToCtxset nat U}
    `{! Compat_ToCtxset_Mapdt nat U}.

  (** ** Level *)
  (********************************************************************)
  Definition level_loc: nat * nat -> nat :=
    fun p => match p with
          | (d, n) => n + 1 - d
          end.

  Definition level: U nat -> nat :=
    mapdReduce (op := Monoid_op_max) (unit := Monoid_unit_max)
      level_loc.

  (** ** Boolean versions *)
  (********************************************************************)
  Definition bound_within_b (gap: nat): nat -> nat -> bool :=
    fun ix depth => ix <? depth + gap.

  Definition bound_b: nat -> nat -> bool :=
    bound_within_b 0.

  Definition cl_at_loc_b (gap: nat) (p: nat * nat): bool :=
    match p with
    | (depth, ix) => bound_within_b gap ix depth
    end.

  Definition cl_at_b (gap: nat) (t: U nat): bool :=
    Forall_ctx_b (cl_at_loc_b gap) t.

  Definition closed_b (t: U nat): bool :=
    cl_at_b 0 t.

  (** ** Propositional versions *)
  (********************************************************************)
  Definition bound_within (gap: nat): nat -> nat -> Prop :=
    fun ix depth => ix < depth + gap.

  Definition bound: nat -> nat -> Prop :=
    bound_within 0.

  Definition cl_at_loc (gap: nat) (p: nat * nat): Prop :=
    match p with
    | (depth, ix) => bound_within gap ix depth
    end.

  Definition cl_at (gap: nat) (t: U nat): Prop :=
    Forall_ctx (cl_at_loc gap) t.

  Definition closed (t: U nat): Prop :=
    cl_at 0 t.

  (** ** Relating the two *)
  (********************************************************************)
  
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat

forall ix depth : nat, bound_within_b gap ix depth = true <-> ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat

forall ix depth : nat, bound_within_b gap ix depth = true <-> ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, ix, depth: nat

bound_within_b gap ix depth = true <-> ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, ix, depth: nat

(ix <? depth + gap) = true <-> ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, ix, depth: nat

ix < depth + gap <-> ix < gap + depth
lia. Qed.
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat

forall ix depth : nat, bound_within_b gap ix depth = false <-> ~ ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat

forall ix depth : nat, bound_within_b gap ix depth = false <-> ~ ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, ix, depth: nat

bound_within_b gap ix depth = false <-> ~ ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, ix, depth: nat

(ix <? depth + gap) = false <-> ~ ix < gap + depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, ix, depth: nat

~ ix < depth + gap <-> ~ ix < gap + depth
lia. Qed.
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U

forall ix depth : nat, bound_b ix depth = true <-> ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U

forall ix depth : nat, bound_b ix depth = true <-> ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
ix, depth: nat

bound_b ix depth = true <-> ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
ix, depth: nat

(ix <? depth + 0) = true <-> ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
ix, depth: nat

ix < depth + 0 <-> ix < depth
lia. Qed.
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U

forall ix depth : nat, bound_b ix depth = false <-> ~ ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U

forall ix depth : nat, bound_b ix depth = false <-> ~ ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
ix, depth: nat

bound_b ix depth = false <-> ~ ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
ix, depth: nat

(ix <? depth + 0) = false <-> ~ ix < depth
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
ix, depth: nat

~ ix < depth + 0 <-> ~ ix < depth
lia. Qed.
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat

forall p : nat * nat, cl_at_loc_b gap p = true <-> cl_at_loc gap p
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat

forall p : nat * nat, cl_at_loc_b gap p = true <-> cl_at_loc gap p
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat
p: (nat * nat)%type

cl_at_loc_b gap p = true <-> cl_at_loc gap p
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat
p: (nat * nat)%type

(let (depth, ix) := p in bound_within_b gap ix depth) = true <-> (let (depth, ix) := p in bound_within gap ix depth)
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap: nat
p: (nat * nat)%type

(let (depth, ix) := p in ix <? depth + gap) = true <-> (let (depth, ix) := p in ix < depth + gap)
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, d, n: nat

(n <? d + gap) = true <-> n < d + gap
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
gap, d, n: nat

n < d + gap <-> n < d + gap
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U

forall (gap : nat) (t : U nat), cl_at_b gap t = true <-> cl_at gap t
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U

forall (gap : nat) (t : U nat), cl_at_b gap t = true <-> cl_at gap t
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U
gap: nat
t: U nat

cl_at_b gap t = true <-> cl_at gap t
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U
gap: nat
t: U nat

Forall_ctx_b (cl_at_loc_b gap) t = true <-> Forall_ctx (cl_at_loc gap) t
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U
gap: nat
t: U nat

Forall_ctx_b (cl_at_loc_b gap) t = true <-> Forall_ctx_b ?Goal0 t = true
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U
gap: nat
t: U nat
forall p : nat * nat, ?Goal0 p = true <-> cl_at_loc gap p
T: Type -> Type
ret_inst: Return T
Mapd_T_inst: Mapd nat T
U: Type -> Type
Mapd_U_inst: Mapd nat U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
ToCtxset_U_inst: ToCtxset nat U
Compat_ToCtxset_Mapdt0: Compat_ToCtxset_Mapdt nat U
DecoratedTraversableFunctor0: DecoratedTraversableFunctor nat U
gap: nat
t: U nat

forall p : nat * nat, cl_at_loc_b gap p = true <-> cl_at_loc gap p
apply cl_at_loc_spec. Qed. End section. #[local] Infix "`bound in`" := (bound_b) (at level 10): tealeaves_scope. (** ** Boundedness and closure *) (**********************************************************************)

forall ix d k : nat, bound_within_b k ix d = ix `bound in` (d + k)

forall ix d k : nat, bound_within_b k ix d = ix `bound in` (d + k)
ix, d, k: nat

bound_within_b k ix d = ix `bound in` (d + k)
ix, d, k: nat

match d + k with | 0 => false | S m' => ix <=? m' end = match d + k + 0 with | 0 => false | S m' => ix <=? m' end
ix, d, k: nat

match d + k with | 0 => false | S m' => ix <=? m' end = match d + k with | 0 => false | S m' => ix <=? m' end
reflexivity. Qed.

forall ix : nat, ix `bound in` 0 = false

forall ix : nat, ix `bound in` 0 = false
reflexivity. Qed.

forall ix n : nat, ix < n -> ix `bound in` n = true

forall ix n : nat, ix < n -> ix `bound in` n = true
ix, n: nat
Hlt: ix < n

ix `bound in` n = true
ix, n: nat
Hlt: (ix <? n) = true

ix `bound in` n = true
ix, n: nat
Hlt: (ix <? n) = true

(ix <? n + 0) = true
ix, n: nat
Hlt: (ix <? n) = true

(ix <? n) = true
destruct n; auto. Qed.

forall ix n : nat, ix < n <-> ix `bound in` n = true

forall ix n : nat, ix < n <-> ix `bound in` n = true
ix, n: nat

ix < n <-> ix `bound in` n = true
ix, n: nat

ix < n -> ix `bound in` n = true
ix, n: nat
ix `bound in` n = true -> ix < n
ix, n: nat

ix < n -> ix `bound in` n = true
apply bound_lt.
ix, n: nat

ix `bound in` n = true -> ix < n
ix, n: nat

match n + 0 with | 0 => false | S m' => ix <=? m' end = true -> ix < n
ix: nat

match 0 + 0 with | 0 => false | S m' => ix <=? m' end = true -> ix < 0
ix, n: nat
match S n + 0 with | 0 => false | S m' => ix <=? m' end = true -> ix < S n
ix: nat

match 0 + 0 with | 0 => false | S m' => ix <=? m' end = true -> ix < 0
inversion 1.
ix, n: nat

match S n + 0 with | 0 => false | S m' => ix <=? m' end = true -> ix < S n
ix, n: nat

(ix <=? n + 0) = true -> ix < S n
ix, n: nat

ix <= n + 0 -> ix < S n
lia. Qed.

forall ix n : nat, ix >= n -> ix `bound in` n = false

forall ix n : nat, ix >= n -> ix `bound in` n = false
ix, n: nat
Hlt: ix >= n

ix `bound in` n = false
ix, n: nat
Hlt: ix >= n

(ix <? n + 0) = false
ix, n: nat
Hlt: ix >= n

(ix <? n) = false
ix, n: nat
Hlt: ix >= S n

(ix <=? n) = false
now rewrite Nat.leb_gt. Qed.

forall ix n : nat, ix >= n <-> ix `bound in` n = false

forall ix n : nat, ix >= n <-> ix `bound in` n = false
ix, n: nat

ix >= n <-> ix `bound in` n = false
ix, n: nat

ix >= n -> ix `bound in` n = false
ix, n: nat
ix `bound in` n = false -> ix >= n
ix, n: nat

ix >= n -> ix `bound in` n = false
apply bound_ge.
ix, n: nat

ix `bound in` n = false -> ix >= n
ix, n: nat

match n + 0 with | 0 => false | S m' => ix <=? m' end = false -> ix >= n
ix, n: nat

match n with | 0 => false | S m' => ix <=? m' end = false -> ix >= n
ix: nat

false = false -> ix >= 0
ix, n: nat
(ix <=? n) = false -> ix >= S n
ix: nat

false = false -> ix >= 0
lia.
ix, n: nat

(ix <=? n) = false -> ix >= S n
ix, n: nat
H: (ix <=? n) = false

ix >= S n
ix, n: nat
H: n < ix

ix >= S n
lia. Qed.

forall (ix n : nat) (P : Prop), (ix >= n -> ix `bound in` n = false -> P) -> (ix < n -> ix `bound in` n = true -> P) -> P

forall (ix n : nat) (P : Prop), (ix >= n -> ix `bound in` n = false -> P) -> (ix < n -> ix `bound in` n = true -> P) -> P
ix, n: nat
P: Prop

(ix >= n -> ix `bound in` n = false -> P) -> (ix < n -> ix `bound in` n = true -> P) -> P
ix, n: nat
P: Prop

(ix >= n -> ix >= n -> P) -> (ix < n -> ix `bound in` n = true -> P) -> P
ix, n: nat
P: Prop

(ix >= n -> ix >= n -> P) -> (ix < n -> ix < n -> P) -> P
ix, n: nat
P: Prop
Hge: ix >= n -> ix >= n -> P
Hlt: ix < n -> ix < n -> P

P
ix, n: nat
P: Prop
Hge: ix >= n -> ix >= n -> P
Hlt: ix < n -> ix < n -> P
ineqrw: (ix ?= n) = Gt
ineqp: ix > n

P
apply Hge; lia. Qed.

forall ix n m : nat, m > n -> ix `bound in` n = true -> ix `bound in` m = true

forall ix n m : nat, m > n -> ix `bound in` n = true -> ix `bound in` m = true
ix, n, m: nat
Hlt: m > n
Hbound: ix `bound in` n = true

ix `bound in` m = true
ix, n, m: nat
Hlt: m > n
Hbound: ix < n

ix `bound in` m = true
ix, n, m: nat
Hlt: m > n
Hbound: ix < n

ix < m
lia. Qed.

forall ix n m : nat, m < n -> ix `bound in` n = false -> ix `bound in` m = false

forall ix n m : nat, m < n -> ix `bound in` n = false -> ix `bound in` m = false
ix, n, m: nat
Hlt: m < n
Hbound: ix `bound in` n = false

ix `bound in` m = false
ix, n, m: nat
Hlt: m < n
Hbound: ix >= n

ix `bound in` m = false
ix, n, m: nat
Hlt: m < n
Hbound: ix >= n

ix >= m
lia. Qed.

forall ix : nat, ix `bound in` 1 = true <-> ix = 0

forall ix : nat, ix `bound in` 1 = true <-> ix = 0
destruct ix; intuition. Qed. Ltac bound_induction := match goal with | |- context[bound_b ?ix ?n] => apply (bound_ind ix n); let Hord := fresh "Hord" in let Hbound := fresh "Hbound" in introv Hord Hbound; try rewrite Hbound in *; try solve [lia | easy] end. Ltac bound_induction_in H := match type of H with | context[bound_b ?ix ?n] => apply (bound_ind ix n); let Hord := fresh "Hord" in let Hbound := fresh "Hbound" in introv Hord Hbound; try rewrite Hbound in *; try solve [lia | easy] end. (** * Incrementing/lifting indices *) (**********************************************************************) Definition lift (x y: nat): nat := plus x y. #[local] Notation "( + x )" := (lift x) (format "( + x )"). #[global] Arguments lift x y/.

(+0) = id
reflexivity. Qed.

forall m n : nat, (+m) ∘ (+n) = (+m + n)

forall m n : nat, (+m) ∘ (+n) = (+m + n)
m, n: nat

(+m) ∘ (+n) = (+m + n)
m, n: nat

Init.Nat.add m ○ Init.Nat.add n = (fun y : nat => m + n + y)
m, n, y: nat

m + (n + y) = m + n + y
lia. Qed.
n, m: nat
X: Type
f: nat -> X

f ∘ (+m) ∘ (+n) = f ∘ (+m + n)
n, m: nat
X: Type
f: nat -> X

f ∘ (+m) ∘ (+n) = f ∘ (+m + n)
now rewrite <- lift_comp. Qed.
n, m: nat

S n + m = S (n + m)
reflexivity. Qed.
n, m: nat

n + S m = S (n + m)
n, m: nat

S (n + m) = n + S m
apply plus_n_Sm. Qed.
n: nat

0 + n = n
reflexivity. Qed.
n: nat

n + 0 = n
n: nat

n = n + 0
apply plus_n_O. Qed. Ltac simplify_lift := progress repeat match goal with | [|- context[(+0)]] => change (+0) with (@id nat) | [|- context[?s S]] => change (s S) with (s (+1)) | [|- context[S ?n + ?m]] => rewrite (plusSn n m) | [|- context[?n + S ?m]] => rewrite (plusnS n m) | [|- context[?n + 0]] => rewrite (plusnO n) | [|- context[0 + ?n]] => rewrite (plusOn n) | [|- context[(+ ?m) ∘ (+ ?n)]] => rewrite (lift_comp m n) | [|- context[(?f ∘ (+ ?m)) ∘ (+ ?n)]] => rewrite (lift_compR m n f) end. (** * Cons operation *) (**********************************************************************) Definition scons {X: Type}: X -> (nat -> X) -> (nat -> X) := fun new sub n => match n with | O => new | S n' => sub n' end. #[local] Infix "⋅" := (scons) (at level 10). (** ** Properties of scons *) (**********************************************************************)
A: Type

forall (x : A) (σ : nat -> A), (x ⋅ σ) 0 = x
A: Type

forall (x : A) (σ : nat -> A), (x ⋅ σ) 0 = x
reflexivity. Qed.
A: Type

forall (x : A) (n : nat) (σ : nat -> A), (x ⋅ σ) (S n) = σ n
A: Type

forall (x : A) (n : nat) (σ : nat -> A), (x ⋅ σ) (S n) = σ n
reflexivity. Qed.
X: Type

forall σ : nat -> X, (σ 0) ⋅ (σ ∘ S) = σ
X: Type

forall σ : nat -> X, (σ 0) ⋅ (σ ∘ S) = σ
X: Type
σ: nat -> X

0) ⋅ (σ ∘ S) = σ
X: Type
σ: nat -> X
ix: nat

((σ 0) ⋅ (σ ∘ S)) ix = σ ix
X: Type
σ: nat -> X

((σ 0) ⋅ (σ ∘ S)) 0 = σ 0
X: Type
σ: nat -> X
ix: nat
((σ 0) ⋅ (σ ∘ S)) (S ix) = σ (S ix)
X: Type
σ: nat -> X

((σ 0) ⋅ (σ ∘ S)) 0 = σ 0
X: Type
σ: nat -> X

σ 0 = σ 0
reflexivity.
X: Type
σ: nat -> X
ix: nat

((σ 0) ⋅ (σ ∘ S)) (S ix) = σ (S ix)
X: Type
σ: nat -> X
ix: nat

(σ ∘ S) ix = σ (S ix)
reflexivity. Qed.
X, Y: Type

forall (σ : nat -> X) (f : X -> Y) (x : X), f ∘ x ⋅ σ = (f x) ⋅ (f ∘ σ)
X, Y: Type

forall (σ : nat -> X) (f : X -> Y) (x : X), f ∘ x ⋅ σ = (f x) ⋅ (f ∘ σ)
intros; now ext [|n]. Qed. (** ** Cons and lifting *) (**********************************************************************)
X: Type

forall (σ : nat -> X) (n : nat), (σ n) ⋅ (σ ∘ (+S n)) = σ ∘ (+n)
X: Type

forall (σ : nat -> X) (n : nat), (σ n) ⋅ (σ ∘ (+S n)) = σ ∘ (+n)
X: Type
σ: nat -> X
n: nat

(σ n) ⋅ (σ ∘ (+S n)) = σ ∘ (+n)
X: Type
σ: nat -> X
n: nat

(σ n) ⋅ (σ ○ Init.Nat.add (S n)) = σ ○ Init.Nat.add n
X: Type
σ: nat -> X
n: nat

((σ n) ⋅ (σ ○ Init.Nat.add (S n))) 0 = σ (n + 0)
X: Type
σ: nat -> X
n, m: nat
((σ n) ⋅ (σ ○ Init.Nat.add (S n))) (S m) = σ (n + S m)
X: Type
σ: nat -> X
n: nat

((σ n) ⋅ (σ ○ Init.Nat.add (S n))) 0 = σ (n + 0)
X: Type
σ: nat -> X
n: nat

σ n = σ (n + 0)
X: Type
σ: nat -> X
n: nat

σ n = σ n
reflexivity.
X: Type
σ: nat -> X
n, m: nat

((σ n) ⋅ (σ ○ Init.Nat.add (S n))) (S m) = σ (n + S m)
X: Type
σ: nat -> X
n, m: nat

σ (S (n + m)) = σ (n + S m)
X: Type
σ: nat -> X
n, m: nat

σ (S (n + m)) = σ (S (n + m))
reflexivity. Qed.
n: nat

n ⋅ (+S n) = (+n)
n: nat

n ⋅ (+S n) = (+n)
apply (cons_eta id). Qed. (** * Renaming *) (**********************************************************************) (* Given a depth and renaming ρ, adjust ρ to account for the depth *) Definition lift__ren: nat -> (nat -> nat) -> (nat -> nat) := fun depth ρ ix => if bound_b ix depth then ix else let free_ix := ix - depth in ρ free_ix + depth. Definition local__ren (ρ: nat -> nat) (p: nat * nat): nat := match p with | (depth, ix) => lift__ren depth ρ ix end. Definition rename `{Mapd_T_inst: Mapd nat T} (ρ: nat -> nat): T nat -> T nat := mapd (T := T) (local__ren ρ). (* adjust a renaming to go under one binder *) Definition up__ren (ρ: nat -> nat): nat -> nat := 0 ⋅ (S ∘ ρ). (** ** Properties of level*) (**********************************************************************) Section level_theory. Context `{Mapdt_T_inst: Mapdt nat T} `{Functor_inst: ! DecoratedTraversableFunctor nat T}.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T

forall (gap : nat) (t : T nat), level t <= gap -> cl_at gap t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T

forall (gap : nat) (t : T nat), level t <= gap -> cl_at gap t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

level t <= gap -> cl_at gap t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapdReduce level_loc t <= gap -> cl_at gap t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapdReduce level_loc t <= gap -> Forall_ctx (cl_at_loc gap) t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

(mapReduce level_loc ∘ toctxlist) t <= gap -> Forall_ctx (cl_at_loc gap) t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

(mapReduce level_loc ∘ toctxlist) t <= gap -> mapdReduce (cl_at_loc gap) t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

(mapReduce level_loc ∘ toctxlist) t <= gap -> (mapReduce (cl_at_loc gap) ∘ toctxlist) t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapReduce level_loc (toctxlist t) <= gap -> mapReduce (cl_at_loc gap) (toctxlist t)
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapReduce level_loc nil <= gap -> mapReduce (cl_at_loc gap) nil
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
mapReduce level_loc (a :: e) <= gap -> mapReduce (cl_at_loc gap) (a :: e)
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapReduce level_loc nil <= gap -> mapReduce (cl_at_loc gap) nil
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

0 <= gap -> True
easy.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e

mapReduce level_loc (a :: e) <= gap -> mapReduce (cl_at_loc gap) (a :: e)
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e

level_loc a ● mapReduce level_loc e <= gap -> (pure cons ● cl_at_loc gap a) ● mapReduce (cl_at_loc gap) e
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e

Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap -> (True /\ cl_at_loc gap a) /\ mapReduce (cl_at_loc gap) e
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

(True /\ cl_at_loc gap a) /\ mapReduce (cl_at_loc gap) e
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

True /\ cl_at_loc gap a
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap
mapReduce (cl_at_loc gap) e
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

True /\ cl_at_loc gap a
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

cl_at_loc gap a
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

let (depth, ix) := a in bound_within gap ix depth
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc (d, n)) (mapReduce level_loc e) <= gap

bound_within gap n d
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc (d, n)) (mapReduce level_loc e) <= gap

n < d + gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (n + 1 - d) (mapReduce (fun p : nat * nat => let (d, n) := p in n + 1 - d) e) <= gap

n < d + gap
lia.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

mapReduce (cl_at_loc gap) e
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap -> mapReduce (cl_at_loc gap) e
H: Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap

mapReduce level_loc e <= gap
lia. Qed.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T

forall (gap : nat) (t : T nat), cl_at gap t -> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T

forall (gap : nat) (t : T nat), cl_at gap t -> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

cl_at gap t -> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

cl_at gap t -> mapdReduce level_loc t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

Forall_ctx (cl_at_loc gap) t -> mapdReduce level_loc t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

Forall_ctx (cl_at_loc gap) t -> (mapReduce level_loc ∘ toctxlist) t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapdReduce (cl_at_loc gap) t -> (mapReduce level_loc ∘ toctxlist) t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

(mapReduce (cl_at_loc gap) ∘ toctxlist) t -> (mapReduce level_loc ∘ toctxlist) t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapReduce (cl_at_loc gap) (toctxlist t) -> mapReduce level_loc (toctxlist t) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapReduce (cl_at_loc gap) nil -> mapReduce level_loc nil <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap
mapReduce (cl_at_loc gap) (a :: e) -> mapReduce level_loc (a :: e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

mapReduce (cl_at_loc gap) nil -> mapReduce level_loc nil <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

True -> 0 <= gap
lia.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap

mapReduce (cl_at_loc gap) (a :: e) -> mapReduce level_loc (a :: e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap

(pure cons ● cl_at_loc gap a) ● mapReduce (cl_at_loc gap) e -> level_loc a ● mapReduce level_loc e <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap

(True /\ cl_at_loc gap a) /\ mapReduce (cl_at_loc gap) e -> Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap
H1: cl_at_loc gap a
H2: mapReduce (cl_at_loc gap) e

Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
a: (nat * nat)%type
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap
H1: let (depth, ix) := a in bound_within gap ix depth
H2: mapReduce (cl_at_loc gap) e

Init.Nat.max (level_loc a) (mapReduce level_loc e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap
H1: bound_within gap n d
H2: mapReduce (cl_at_loc gap) e

Init.Nat.max (level_loc (d, n)) (mapReduce level_loc e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce (cl_at_loc gap) e -> mapReduce level_loc e <= gap
H1: n < d + gap
H2: mapReduce (cl_at_loc gap) e

Init.Nat.max (level_loc (d, n)) (mapReduce level_loc e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap
H1: n < d + gap
H2: mapReduce (cl_at_loc gap) e

Init.Nat.max (level_loc (d, n)) (mapReduce level_loc e) <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
d, n: nat
e: list (nat * nat)
IHe: mapReduce level_loc e <= gap
H1: n < d + gap
H2: mapReduce (cl_at_loc gap) e

Init.Nat.max (n + 1 - d) (mapReduce level_loc e) <= gap
lia. Qed.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T

forall (gap : nat) (t : T nat), cl_at gap t <-> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T

forall (gap : nat) (t : T nat), cl_at gap t <-> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

cl_at gap t <-> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

cl_at gap t -> level t <= gap
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat
level t <= gap -> cl_at gap t
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

cl_at gap t -> level t <= gap
apply level2.
T: Type -> Type
Mapdt_T_inst: Mapdt nat T
Functor_inst: DecoratedTraversableFunctor nat T
gap: nat
t: T nat

level t <= gap -> cl_at gap t
apply level1. Qed. End level_theory. (** ** Properties of renaming *) (**********************************************************************) Section renaming_theory. Context `{Mapd_T_inst: Mapd nat T} `{Functor_inst: ! DecoratedFunctor nat T}. (** ** Renaming and <<ret>> *) (********************************************************************)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 0 = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 0 = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

(fun ρ (ix : nat) => if ix `bound in` 0 then ix else ρ (ix - 0) + 0) = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat

(if ix `bound in` 0 then ix else ρ (ix - 0) + 0) = id ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix >= 0
Hbound: ix `bound in` 0 = false

ρ (ix - 0) + 0 = id ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix >= 0
Hbound: ix `bound in` 0 = false

ρ ix + 0 = id ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix >= 0
Hbound: ix `bound in` 0 = false

ρ ix = id ρ ix
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ (ix : nat), local__ren ρ (0, ix) = ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ (ix : nat), local__ren ρ (0, ix) = ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat

local__ren ρ (0, ix) = ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat

lift__ren 0 ρ ix = ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat

id ρ ix = ρ ix
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T

forall ρ (ix : nat), rename ρ (ret ix) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T

forall ρ (ix : nat), rename ρ (ret ix) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

rename ρ (ret ix) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

mapd (local__ren ρ) (ret ix) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

(mapd (local__ren ρ) ∘ ret) ix = (ret ∘ ρ) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

(ret ∘ local__ren ρ ∘ ret) ix = (ret ∘ ρ) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

ret (local__ren ρ (ret ix)) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

ret (local__ren ρ (Ƶ, ix)) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

ret (local__ren ρ (0, ix)) = ret (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
H: Return T
H0: Bindd nat T T
Compat_Mapd_Bindd0: Compat_Mapd_Bindd nat T T
DecoratedMonad0: DecoratedMonad nat T
ρ: nat -> nat
ix: nat

ret (ρ ix) = ret (ρ ix)
reflexivity. Qed. (** ** Renaming identity *) (********************************************************************)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall depth : nat, lift__ren depth id = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall depth : nat, lift__ren depth id = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall depth : nat, (fun ix : nat => if ix `bound in` depth then ix else id (ix - depth) + depth) = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat

(fun ix : nat => if ix `bound in` depth then ix else id (ix - depth) + depth) = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat

(if ix `bound in` depth then ix else id (ix - depth) + depth) = id ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat

(if ix `bound in` depth then ix else ix - depth + depth) = ix
bound_induction. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

local__ren id = extract
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

local__ren id = extract
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat

local__ren id (depth, ix) = extract (depth, ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat

lift__ren depth id ix = extract (depth, ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat

id ix = extract (depth, ix)
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

rename id = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

rename id = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

mapd (local__ren id) = id
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

mapd extract = id
apply kdf_mapd1. Qed. (** ** Composition of renaming *) (********************************************************************)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall (depth ix : nat) ρ1 ρ2, ix >= depth -> lift__ren depth ρ2 (ρ1 (ix - depth) + depth) = ρ2 (ρ1 (ix - depth)) + depth
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall (depth ix : nat) ρ1 ρ2, ix >= depth -> lift__ren depth ρ2 (ρ1 (ix - depth) + depth) = ρ2 (ρ1 (ix - depth)) + depth
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat
ρ1, ρ2: nat -> nat
H: ix >= depth

lift__ren depth ρ2 (ρ1 (ix - depth) + depth) = ρ2 (ρ1 (ix - depth)) + depth
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat
ρ1, ρ2: nat -> nat
H: ix >= depth

(if (ρ1 (ix - depth) + depth) `bound in` depth then ρ1 (ix - depth) + depth else ρ2 (ρ1 (ix - depth) + depth - depth) + depth) = ρ2 (ρ1 (ix - depth)) + depth
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat
ρ1, ρ2: nat -> nat
H: ix >= depth
Hord: ρ1 (ix - depth) + depth >= depth
Hbound: (ρ1 (ix - depth) + depth) `bound in` depth = false

ρ2 (ρ1 (ix - depth) + depth - depth) + depth = ρ2 (ρ1 (ix - depth)) + depth
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat
ρ1, ρ2: nat -> nat
H: ix >= depth
Hord: ρ1 (ix - depth) + depth >= depth
Hbound: (ρ1 (ix - depth) + depth) `bound in` depth = false

ρ2 (ρ1 (ix - depth) + depth - depth) + depth = ρ2 (ρ1 (ix - depth)) + depth
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat
ρ1, ρ2: nat -> nat
H: ix >= depth
Hord: ρ1 (ix - depth) + depth >= depth
Hbound: (ρ1 (ix - depth) + depth) `bound in` depth = false

ρ2 (ρ1 (ix - depth) + depth - depth) = ρ2 (ρ1 (ix - depth))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth, ix: nat
ρ1, ρ2: nat -> nat
H: ix >= depth
Hord: ρ1 (ix - depth) + depth >= depth
Hbound: (ρ1 (ix - depth) + depth) `bound in` depth = false

ρ1 (ix - depth) + depth - depth = ρ1 (ix - depth)
lia. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ (depth ix : nat), ix < depth -> lift__ren depth ρ ix = ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ (depth ix : nat), ix < depth -> lift__ren depth ρ ix = ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
depth, ix: nat
H: ix < depth

lift__ren depth ρ ix = ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
depth, ix: nat
H: ix < depth

(if ix `bound in` depth then ix else ρ (ix - depth) + depth) = ix
bound_induction. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall (depth : nat) ρ1 ρ2, lift__ren depth ρ2 ∘ lift__ren depth ρ1 = lift__ren depth (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall (depth : nat) ρ1 ρ2, lift__ren depth ρ2 ∘ lift__ren depth ρ1 = lift__ren depth (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
ρ1, ρ2: nat -> nat

lift__ren depth ρ2 ∘ lift__ren depth ρ1 = lift__ren depth (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
ρ1, ρ2: nat -> nat
ix: nat

(lift__ren depth ρ2 ∘ lift__ren depth ρ1) ix = lift__ren depth (ρ2 ∘ ρ1) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
ρ1, ρ2: nat -> nat
ix: nat

lift__ren depth ρ2 (lift__ren depth ρ1 ix) = lift__ren depth (ρ2 ○ ρ1) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
ρ1, ρ2: nat -> nat
ix: nat

lift__ren depth ρ2 (if ix `bound in` depth then ix else ρ1 (ix - depth) + depth) = (if ix `bound in` depth then ix else ρ2 (ρ1 (ix - depth)) + depth)
bound_induction; auto using lift__ren_loc_compose1, lift__ren_loc_compose2. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ2 ρ1, local__ren ρ2 ⋆1 local__ren ρ1 = local__ren (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ2 ρ1, local__ren ρ2 ⋆1 local__ren ρ1 = local__ren (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat

local__ren ρ2 ⋆1 local__ren ρ1 = local__ren (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat
depth, ix: nat

(local__ren ρ2 ⋆1 local__ren ρ1) (depth, ix) = local__ren (ρ2 ∘ ρ1) (depth, ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat
depth, ix: nat

lift__ren depth ρ2 (lift__ren depth ρ1 ix) = lift__ren depth (ρ2 ∘ ρ1) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat
depth, ix: nat

(lift__ren depth ρ2 ∘ lift__ren depth ρ1) ix = lift__ren depth (ρ2 ∘ ρ1) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat
depth, ix: nat

lift__ren depth (ρ2 ∘ ρ1) ix = lift__ren depth (ρ2 ∘ ρ1) ix
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ2 ρ1, rename ρ2 ∘ rename ρ1 = rename (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ2 ρ1, rename ρ2 ∘ rename ρ1 = rename (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat

rename ρ2 ∘ rename ρ1 = rename (ρ2 ∘ ρ1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat

mapd (local__ren ρ2) ∘ mapd (local__ren ρ1) = mapd (local__ren (ρ2 ∘ ρ1))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat

mapd (local__ren ρ2 ⋆1 local__ren ρ1) = mapd (local__ren (ρ2 ∘ ρ1))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ2, ρ1: nat -> nat

mapd (local__ren (ρ2 ∘ ρ1)) = mapd (local__ren (ρ2 ∘ ρ1))
reflexivity. Qed. (** ** Iterating lifting *) (********************************************************************)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall n m : nat, lift__ren m ∘ lift__ren n = lift__ren (m + n)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall n m : nat, lift__ren m ∘ lift__ren n = lift__ren (m + n)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat

lift__ren m ∘ lift__ren n = lift__ren (m + n)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat

(lift__ren m ∘ lift__ren n) σ ix = lift__ren (m + n) σ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat

(if ix `bound in` m then ix else (if (ix - m) `bound in` n then ix - m else σ (ix - m - n) + n) + m) = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false

(if (ix - m) `bound in` n then ix - m else σ (ix - m - n) + n) + m = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix < m
Hbound: ix `bound in` m = true
ix = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false

(if (ix - m) `bound in` n then ix - m else σ (ix - m - n) + n) + m = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false

σ (ix - m - n) + n + m = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
ix - m + m = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false

σ (ix - m - n) + n + m = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

σ (ix - m - n) + n + m = σ (ix - (m + n)) + (m + n)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

σ (ix - m - n) + n + m = σ (ix - (n + m)) + (n + m)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

σ (ix - m - n) + n + m = σ (ix - (n + m)) + n + m
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

σ (ix - m - n) + n = σ (ix - (n + m)) + n
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

σ (ix - m - n) = σ (ix - (n + m))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

ix - m - n = ix - (n + m)
lia.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true

ix - m + m = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
bound_induction.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n, m: nat
σ: nat -> nat
ix: nat
Hord: ix < m
Hbound: ix `bound in` m = true

ix = (if ix `bound in` (m + n) then ix else σ (ix - (m + n)) + (m + n))
bound_induction. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall (n : nat) ρ, lift__ren (S n) ρ = lift__ren n (lift__ren 1 ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall (n : nat) ρ, lift__ren (S n) ρ = lift__ren n (lift__ren 1 ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
ρ: nat -> nat

lift__ren (S n) ρ = lift__ren n (lift__ren 1 ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
ρ: nat -> nat

lift__ren (n + 1) ρ = lift__ren n (lift__ren 1 ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
ρ: nat -> nat

lift__ren (n + 1) ρ = (lift__ren n ∘ lift__ren 1) ρ
now rewrite lift__ren_compose. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall n : nat, lift__ren n = iterate n (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall n : nat, lift__ren n = iterate n (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat

lift__ren n = iterate n (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 0 = iterate 0 (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
IHn: lift__ren n = iterate n (lift__ren 1)
lift__ren (S n) = iterate (S n) (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 0 = iterate 0 (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

id = iterate 0 (lift__ren 1)
reflexivity.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
IHn: lift__ren n = iterate n (lift__ren 1)

lift__ren (S n) = iterate (S n) (lift__ren 1)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
IHn: lift__ren n = iterate n (lift__ren 1)
ρ: nat -> nat

lift__ren (S n) ρ = iterate (S n) (lift__ren 1) ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
IHn: lift__ren n = iterate n (lift__ren 1)
ρ: nat -> nat

lift__ren n (lift__ren 1 ρ) = iterate (S n) (lift__ren 1) ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
IHn: lift__ren n = iterate n (lift__ren 1)
ρ: nat -> nat

iterate n (lift__ren 1) (lift__ren 1 ρ) = iterate (S n) (lift__ren 1) ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
n: nat
IHn: lift__ren n = iterate n (lift__ren 1)
ρ: nat -> nat

iterate n (lift__ren 1) (lift__ren 1 ρ) = (iterate n (lift__ren 1) ∘ lift__ren 1) ρ
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
n: nat

local__ren ρ ⦿ n = local__ren (lift__ren n ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
n: nat

local__ren ρ ⦿ n = local__ren (lift__ren n ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
n, depth, ix: nat

lift__ren (n ● depth) ρ ix = lift__ren depth (lift__ren n ρ) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
n, depth, ix: nat

lift__ren (n + depth) ρ ix = lift__ren depth (lift__ren n ρ) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
n, depth, ix: nat

lift__ren (n + depth) ρ ix = (lift__ren depth ∘ lift__ren n) ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
n, depth, ix: nat

lift__ren (n + depth) ρ ix = lift__ren (depth + n) ρ ix
fequal; lia. Qed. (** ** Relating <<lift__ren>> to <<up__ren>> *) (********************************************************************)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 1 = up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 1 = up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat

lift__ren 1 ρ ix = up__ren ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat

(if ix `bound in` 1 then ix else ρ (ix - 1) + 1) = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix >= 1
Hbound: ix `bound in` 1 = false

ρ (ix - 1) + 1 = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix < 1
Hbound: ix `bound in` 1 = true
ix = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix >= 1
Hbound: ix `bound in` 1 = false

ρ (ix - 1) + 1 = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix >= 1
Hbound: ix `bound in` 1 = false

ρ (ix - 1) + 1 = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
Hord: 0 >= 1
Hbound: 0 `bound in` 1 = false

ρ (0 - 1) + 1 = (0 ⋅ (S ∘ ρ)) 0
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false
ρ (S ix - 1) + 1 = (0 ⋅ (S ∘ ρ)) (S ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
Hord: 0 >= 1
Hbound: 0 `bound in` 1 = false

ρ (0 - 1) + 1 = (0 ⋅ (S ∘ ρ)) 0
false.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

ρ (S ix - 1) + 1 = (0 ⋅ (S ∘ ρ)) (S ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

ρ (ix - 0) + 1 = (S ∘ ρ) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

ρ (ix - 0) + 1 = S (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

S (ρ (ix - 0)) = S (ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

ix - 0 = ix
lia.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix < 1
Hbound: ix `bound in` 1 = true

ix = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
ix: nat
Hord: ix < 1
Hbound: ix = 0

ix = (0 ⋅ (S ∘ ρ)) ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
Hord: 0 < 1

0 = (0 ⋅ (S ∘ ρ)) 0
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall depth : nat, lift__ren depth = iterate depth up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall depth : nat, lift__ren depth = iterate depth up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat

lift__ren depth = iterate depth up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 0 = iterate 0 up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren
lift__ren (S depth) = iterate (S depth) up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

lift__ren 0 = iterate 0 up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

id = iterate 0 up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

id = id
reflexivity.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren

lift__ren (S depth) = iterate (S depth) up__ren
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren
ρ: nat -> nat

lift__ren (S depth) ρ = iterate (S depth) up__ren ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren
ρ: nat -> nat

lift__ren depth (lift__ren 1 ρ) = iterate (S depth) up__ren ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren
ρ: nat -> nat

lift__ren depth (lift__ren 1 ρ) = (iterate depth up__ren ∘ up__ren) ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren
ρ: nat -> nat

iterate depth up__ren (lift__ren 1 ρ) = (iterate depth up__ren ∘ up__ren) ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
depth: nat
IHdepth: lift__ren depth = iterate depth up__ren
ρ: nat -> nat

iterate depth up__ren (up__ren ρ) = (iterate depth up__ren ∘ up__ren) ρ
reflexivity. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ (depth ix : nat), local__ren ρ (depth, ix) = iterate depth up__ren ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T

forall ρ (depth ix : nat), local__ren ρ (depth, ix) = iterate depth up__ren ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
depth, ix: nat

local__ren ρ (depth, ix) = iterate depth up__ren ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
depth, ix: nat

lift__ren depth ρ ix = iterate depth up__ren ρ ix
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
depth, ix: nat

iterate depth up__ren ρ ix = iterate depth up__ren ρ ix
reflexivity. Qed. (** ** Operations with policy *) (********************************************************************) Definition map_with_policy `{Mapd nat T} (policy: (nat -> nat) -> (nat -> nat)) (ρ: nat -> nat): T nat -> T nat := mapd (fun '(depth, ix) => iterate depth policy ρ ix).
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

rename ρ = map_with_policy up__ren ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

rename ρ = map_with_policy up__ren ρ
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

mapd (local__ren ρ) = mapd (fun '(depth, ix) => iterate depth up__ren ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

local__ren ρ = (fun '(depth, ix) => iterate depth up__ren ρ ix)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat
depth, ix: nat

local__ren ρ (depth, ix) = iterate depth up__ren ρ ix
apply local__ren_repr. Qed.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

local__ren ρ ⦿ 1 = local__ren (up__ren ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

local__ren ρ ⦿ 1 = local__ren (up__ren ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

local__ren (lift__ren 1 ρ) = local__ren (up__ren ρ)
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
ρ: nat -> nat

local__ren (up__ren ρ) = local__ren (up__ren ρ)
reflexivity. Qed. (** ** Characterizing occurrence *) (********************************************************************) Context `{Mapdt_inst: Mapdt nat T} `{! Compat_Mapd_Mapdt nat T} `{DTF_inst: ! DecoratedTraversableFunctor nat T}.
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T

forall (l n : nat) (t : T nat) ρ, (n, l) ∈d rename ρ t <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T

forall (l n : nat) (t : T nat) ρ, (n, l) ∈d rename ρ t <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T
l, n: nat
t: T nat
ρ: nat -> nat

(n, l) ∈d rename ρ t <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T
l, n: nat
t: T nat
ρ: nat -> nat

(n, l) ∈d mapd (local__ren ρ) t <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T
l, n: nat
t: T nat
ρ: nat -> nat

(exists a : nat, (n, a) ∈d t /\ local__ren ρ (n, a) = l) <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T
l, n: nat
t: T nat
ρ: nat -> nat

(exists a : nat, (n, a) ∈d t /\ (if a `bound in` n then a else ρ (a - n) + n) = l) <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
T: Type -> Type
Mapd_T_inst: Mapd nat T
Functor_inst: DecoratedFunctor nat T
Mapdt_inst: Mapdt nat T
Compat_Mapd_Mapdt0: Compat_Mapd_Mapdt nat T
DTF_inst: DecoratedTraversableFunctor nat T
l, n: nat
t: T nat
ρ: nat -> nat

(exists a : nat, (n, a) ∈d t /\ (if a `bound in` n then a else n + ρ (a - n)) = l) <-> (exists l1 : nat, (n, l1) ∈d t /\ l = (if l1 `bound in` n then l1 else n + ρ (l1 - n)))
intuition; preprocess; eauto. Qed. End renaming_theory. (** * De Bruijn operations *) (**********************************************************************) Section ops. Context `{ret_inst: Return T} `{Mapd_T_inst: Mapd nat T} `{Bindd_U_inst: Bindd nat T U}. (* Given a depth and substitution σ, adjust σ to account for the depth *) Definition lift__sub: nat -> (nat -> T nat) -> (nat -> T nat) := fun depth σ ix => if ix `bound in` depth then ret ix else let free_ix := ix - depth in rename (+ depth) (σ free_ix). Definition local__sub (σ: nat -> T nat) (p: nat * nat): T nat := match p with | (depth, ix) => lift__sub depth σ ix end. Definition subst (σ: nat -> T nat): U nat -> U nat := bindd (local__sub σ). (* adjust a substitution to go under one binder *) Definition up__sub (σ: nat -> T nat): nat -> T nat := (ret 0) ⋅ (rename (+1) ∘ σ). End ops. Section theory. Context `{ret_inst: Return T} `{Map_T_inst: Map T} `{Mapd_T_inst: Mapd nat T} `{Traverse_T_inst: Traverse T} `{Bind_T_inst: Bind T T} `{Mapdt_T_inst: Mapdt nat T} `{Bindd_T_inst: Bindd nat T T} `{Bindt_T_inst: Bindt T T} `{Binddt_T_inst: Binddt nat T T} `{! Compat_Map_Binddt nat T T} `{! Compat_Mapd_Binddt nat T T} `{! Compat_Traverse_Binddt nat T T} `{! Compat_Bind_Binddt nat T T} `{! Compat_Mapdt_Binddt nat T T} `{! Compat_Bindd_Binddt nat T T} `{! Compat_Bindt_Binddt nat T T} `{Monad_inst: ! DecoratedTraversableMonad nat T}. Context `{Map_U_inst: Map U} `{Mapd_U_inst: Mapd nat U} `{Traverse_U_inst: Traverse U} `{Bind_U_inst: Bind T U} `{Mapdt_U_inst: Mapdt nat U} `{Bindd_U_inst: Bindd nat T U} `{Bindt_U_inst: Bindt T U} `{Binddt_U_inst: Binddt nat T U} `{! Compat_Map_Binddt nat T U} `{! Compat_Mapd_Binddt nat T U} `{! Compat_Traverse_Binddt nat T U} `{! Compat_Bind_Binddt nat T U} `{! Compat_Mapdt_Binddt nat T U} `{! Compat_Bindd_Binddt nat T U} `{! Compat_Bindt_Binddt nat T U} `{Module_inst: ! DecoratedTraversableRightPreModule nat T U (unit := Monoid_unit_zero) (op := Monoid_op_plus)}. (** * Properties of substitution *) (********************************************************************) (** ** Substitution and ret *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

lift__sub 0 = id
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

lift__sub 0 = id
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

lift__sub 0 σ ix = id σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

lift__sub 0 σ ix = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

(if ix `bound in` 0 then ret ix else rename (+0) (σ (ix - 0))) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

rename (+0) (σ (ix - 0)) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

rename (+0) (σ ix) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

rename id (σ ix) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
id = (+0)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

id = (+0)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix, n: nat

id n = (+0) n
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix, n: nat

n = 0 + n
lia.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

rename id (σ ix) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

mapd (local__ren id) (σ ix) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

mapd extract (σ ix) = σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

id (σ ix) = σ ix
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (n : nat), local__sub σ (0, n) = σ n
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (n : nat), local__sub σ (0, n) = σ n
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

local__sub σ (0, n) = σ n
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

lift__sub 0 σ n = σ n
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

id σ n = σ n
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (x : nat), (local__sub σ ∘ ret) x = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (x : nat), (local__sub σ ∘ ret) x = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

(local__sub σ ∘ ret) x = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

(local__sub σ ∘ (fun a : nat => (0, a))) x = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

local__sub σ (0, x) = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

σ x = σ x
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (x : nat), subst σ (ret x) = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (x : nat), subst σ (ret x) = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

subst σ (ret x) = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

bindd (local__sub σ) (ret x) = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

(bindd (local__sub σ) ∘ ret) x = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

(local__sub σ ∘ ret) x = σ x
apply local__sub_compose_ret. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall σ : nat -> T nat, subst σ ∘ ret = σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall σ : nat -> T nat, subst σ ∘ ret = σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

subst σ ∘ ret = σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

(subst σ ∘ ret) x = σ x
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
x: nat

subst σ (ret x) = σ x
apply subst_ret. Qed. (** ** Substitution and identity *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall depth ix : nat, lift__sub depth ret ix = (ret ∘ extract) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall depth ix : nat, lift__sub depth ret ix = (ret ∘ extract) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat

lift__sub depth ret ix = (ret ∘ extract) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat

(if ix `bound in` depth then ret ix else rename (+depth) (ret (ix - depth))) = (ret ∘ extract) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

rename (+depth) (ret (ix - depth)) = (ret ∘ extract) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

ret ((+depth) (ix - depth)) = (ret ∘ extract) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

ret ((+depth) (ix - depth)) = ret (extract (depth, ix))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

ret (depth + (ix - depth)) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

depth + (ix - depth) = ix
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

local__sub ret = ret ∘ extract
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

local__sub ret = ret ∘ extract
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

(fun p : nat * nat => let (depth, ix) := p in lift__sub depth ret ix) = ret ∘ extract
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat

lift__sub depth ret ix = (ret ∘ extract) (depth, ix)
apply lift__sub_id. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

subst ret = id
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

subst ret = id
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

bindd (local__sub ret) = id
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

bindd (ret ∘ extract) = id
apply bindd_id. Qed. (** ** Iterated lifting *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n m : nat, lift__sub m ∘ lift__sub n = lift__sub (m + n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n m : nat, lift__sub m ∘ lift__sub n = lift__sub (m + n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat

lift__sub m ∘ lift__sub n = lift__sub (m + n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat

(lift__sub m ∘ lift__sub n) σ ix = lift__sub (m + n) σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat

(if ix `bound in` m then ret ix else rename (+m) (if (ix - m) `bound in` n then ret (ix - m) else rename (+n) (σ (ix - m - n)))) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false

rename (+m) (if (ix - m) `bound in` n then ret (ix - m) else rename (+n) (σ (ix - m - n))) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix < m
Hbound: ix `bound in` m = true
ret ix = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false

rename (+m) (if (ix - m) `bound in` n then ret (ix - m) else rename (+n) (σ (ix - m - n))) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false

rename (+m) (rename (+n) (σ (ix - m - n))) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
rename (+m) (ret (ix - m)) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false

rename (+m) (rename (+n) (σ (ix - m - n))) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

rename (+m) (rename (+n) (σ (ix - m - n))) = rename (+m + n) (σ (ix - (m + n)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

(rename (+m) ∘ rename (+n)) (σ (ix - m - n)) = rename (+m + n) (σ (ix - (m + n)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

rename ((+m) ∘ (+n)) (σ (ix - m - n)) = rename (+m + n) (σ (ix - (m + n)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

rename (+m + n) (σ (ix - m - n)) = rename (+m + n) (σ (ix - (m + n)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

σ (ix - m - n) = σ (ix - (m + n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m >= n
Hbound0: (ix - m) `bound in` n = false
Hord1: ix >= m + n
Hbound1: ix `bound in` (m + n) = false

ix - m - n = ix - (m + n)
lia.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true

rename (+m) (ret (ix - m)) = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

rename (+m) (ret (ix - m)) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

(rename (+m) ∘ ret) (ix - m) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

(mapd (local__ren (+m)) ∘ ret) (ix - m) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

(ret ∘ local__ren (+m) ∘ ret) (ix - m) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

ret (m + (ix - m - Ƶ) + Ƶ) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

m + (ix - m - Ƶ) + Ƶ = ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix >= m
Hbound: ix `bound in` m = false
Hord0: ix - m < n
Hbound0: (ix - m) `bound in` n = true
Hord1: ix < m + n
Hbound1: ix `bound in` (m + n) = true

m + (ix - m - 0) + 0 = ix
lia.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, m: nat
σ: nat -> T nat
ix: nat
Hord: ix < m
Hbound: ix `bound in` m = true

ret ix = (if ix `bound in` (m + n) then ret ix else rename (+m + n) (σ (ix - (m + n))))
bound_induction. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (n : nat) (σ : nat -> T nat), lift__sub (S n) σ = lift__sub n (lift__sub 1 σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (n : nat) (σ : nat -> T nat), lift__sub (S n) σ = lift__sub n (lift__sub 1 σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
σ: nat -> T nat

lift__sub (S n) σ = lift__sub n (lift__sub 1 σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
σ: nat -> T nat

lift__sub (n + 1) σ = lift__sub n (lift__sub 1 σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
σ: nat -> T nat

lift__sub (n + 1) σ = (lift__sub n ∘ lift__sub 1) σ
now rewrite lift__sub_compose. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n : nat, lift__sub n = iterate n (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n : nat, lift__sub n = iterate n (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat

lift__sub n = iterate n (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

lift__sub 0 = iterate 0 (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
IHn: lift__sub n = iterate n (lift__sub 1)
lift__sub (S n) = iterate (S n) (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

lift__sub 0 = iterate 0 (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

id = iterate 0 (lift__sub 1)
reflexivity.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
IHn: lift__sub n = iterate n (lift__sub 1)

lift__sub (S n) = iterate (S n) (lift__sub 1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
IHn: lift__sub n = iterate n (lift__sub 1)
σ: nat -> T nat

lift__sub (S n) σ = iterate (S n) (lift__sub 1) σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
IHn: lift__sub n = iterate n (lift__sub 1)
σ: nat -> T nat

lift__sub n (lift__sub 1 σ) = iterate (S n) (lift__sub 1) σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
IHn: lift__sub n = iterate n (lift__sub 1)
σ: nat -> T nat

lift__sub n (lift__sub 1 σ) = iterate n (lift__sub 1) (lift__sub 1 σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
IHn: lift__sub n = iterate n (lift__sub 1)
σ: nat -> T nat

iterate n (lift__sub 1) (lift__sub 1 σ) = iterate n (lift__sub 1) (lift__sub 1 σ)
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

local__sub σ ⦿ n = local__sub (lift__sub n σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

local__sub σ ⦿ n = local__sub (lift__sub n σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

(fun p : nat * nat => let (depth, ix) := p in lift__sub depth σ ix) ⦿ n = (fun p : nat * nat => let (depth, ix) := p in lift__sub depth (lift__sub n σ) ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n, depth, ix: nat

lift__sub (n ● depth) σ ix = lift__sub depth (lift__sub n σ) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n, depth, ix: nat

lift__sub (n ● depth) σ ix = (lift__sub depth ∘ lift__sub n) σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n, depth, ix: nat

lift__sub (n ● depth) σ ix = lift__sub (depth + n) σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n, depth, ix: nat

lift__sub (n + depth) σ ix = lift__sub (depth + n) σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n, depth, ix: nat

n + depth = depth + n
lia. Qed. (** ** Substitution and composition *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall σ2 σ1 : nat -> T nat, local__sub σ2 ⋆5 local__sub σ1 = local__sub (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall σ2 σ1 : nat -> T nat, local__sub σ2 ⋆5 local__sub σ1 = local__sub (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat

local__sub σ2 ⋆5 local__sub σ1 = local__sub (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat

(fun '(w, a) => bindd (local__sub σ2 ⦿ w) (local__sub σ1 (w, a))) = local__sub (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat

bindd (local__sub σ2 ⦿ depth) (local__sub σ1 (depth, ix)) = local__sub (subst σ2 ∘ σ1) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat

bindd (local__sub σ2 ⦿ depth) (lift__sub depth σ1 ix) = lift__sub depth (subst σ2 ∘ σ1) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat

bindd (local__sub σ2 ⦿ depth) (if ix `bound in` depth then ret ix else rename (+depth) (σ1 (ix - depth))) = (if ix `bound in` depth then ret ix else rename (+depth) ((subst σ2 ∘ σ1) (ix - depth)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub σ2 ⦿ depth) (rename (+depth) (σ1 (ix - depth))) = rename (+depth) ((subst σ2 ∘ σ1) (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true
bindd (local__sub σ2 ⦿ depth) (ret ix) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

bindd (local__sub σ2 ⦿ depth) (ret ix) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

(bindd (local__sub σ2 ⦿ depth) ∘ ret) ix = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

(local__sub σ2 ⦿ depth ∘ ret) ix = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

(local__sub σ2 ⦿ depth) (ret ix) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

(local__sub σ2 ⦿ depth) (Ƶ, ix) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

((fun p : nat * nat => let (depth, ix) := p in lift__sub depth σ2 ix) ⦿ depth) (Ƶ, ix) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

lift__sub (depth ● Ƶ) σ2 ix = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

lift__sub depth σ2 ix = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

(if ix `bound in` depth then ret ix else rename (+depth) (σ2 (ix - depth))) = ret ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix < depth
Hbound: ix `bound in` depth = true

ret ix = ret ix
reflexivity.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub σ2 ⦿ depth) (rename (+depth) (σ1 (ix - depth))) = rename (+depth) ((subst σ2 ∘ σ1) (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub σ2 ⦿ depth) (rename (+depth) (σ1 (ix - depth))) = rename (+depth) ((subst σ2 ∘ σ1) (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub σ2 ⦿ depth) (rename (+depth) (σ1 (ix - depth))) = rename (+depth) (subst σ2 (σ1 (ix - depth)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub σ2 ⦿ depth) (mapd (local__ren (+depth)) (σ1 (ix - depth))) = mapd (local__ren (+depth)) (subst σ2 (σ1 (ix - depth)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub (lift__sub depth σ2)) (mapd (local__ren (+depth)) (σ1 (ix - depth))) = mapd (local__ren (+depth)) (subst σ2 (σ1 (ix - depth)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

(bindd (local__sub (lift__sub depth σ2)) ∘ mapd (local__ren (+depth))) (σ1 (ix - depth)) = mapd (local__ren (+depth)) (subst σ2 (σ1 (ix - depth)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

(bindd (local__sub (lift__sub depth σ2)) ∘ mapd (local__ren (+depth))) (σ1 (ix - depth)) = (mapd (local__ren (+depth)) ∘ subst σ2) (σ1 (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth)) (σ1 (ix - depth)) = (mapd (local__ren (+depth)) ∘ subst σ2) (σ1 (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth)) (σ1 (ix - depth)) = (mapd (local__ren (+depth)) ∘ bindd (local__sub σ2)) (σ1 (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

bindd (local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth)) (σ1 (ix - depth)) = bindd (fun '(w, t) => mapd (local__ren (+depth) ⦿ w) (local__sub σ2 (w, t))) (σ1 (ix - depth))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth) = (fun '(w, t) => mapd (local__ren (+depth) ⦿ w) (local__sub σ2 (w, t)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat

(local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth)) (depth', ix') = mapd (local__ren (+depth) ⦿ depth') (local__sub σ2 (depth', ix'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat

(local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth)) (depth', ix') = mapd (local__ren (+depth) ⦿ depth') (local__sub σ2 (depth', ix'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat

(local__sub (lift__sub depth σ2) ⋆1 local__ren (+depth)) (depth', ix') = mapd (local__ren (lift__ren depth' (+depth))) (local__sub σ2 (depth', ix'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat

lift__sub depth' (lift__sub depth σ2) (lift__ren depth' (+depth) ix') = mapd (local__ren (lift__ren depth' (+depth))) (lift__sub depth' σ2 ix')
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat

lift__sub depth' (lift__sub depth σ2) (if ix' `bound in` depth' then ix' else (+depth) (ix' - depth') + depth') = mapd (local__ren (lift__ren depth' (+depth))) (lift__sub depth' σ2 ix')
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat

lift__sub depth' (lift__sub depth σ2) (if ix' `bound in` depth' then ix' else (+depth) (ix' - depth') + depth') = mapd (local__ren (lift__ren depth' (+depth))) (if ix' `bound in` depth' then ret ix' else rename (+depth') (σ2 (ix' - depth')))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) ((+depth) (ix' - depth') + depth') = mapd (local__ren (lift__ren depth' (+depth))) (rename (+depth') (σ2 (ix' - depth')))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true
lift__sub depth' (lift__sub depth σ2) ix' = mapd (local__ren (lift__ren depth' (+depth))) (ret ix')
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) ((+depth) (ix' - depth') + depth') = mapd (local__ren (lift__ren depth' (+depth))) (rename (+depth') (σ2 (ix' - depth')))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) (depth + (ix' - depth') + depth') = mapd (local__ren (lift__ren depth' (+depth))) (rename (+depth') (σ2 (ix' - depth')))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) (ix' + depth) = mapd (local__ren (lift__ren depth' (+depth))) (rename (+depth') (σ2 (ix' - depth')))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) (ix' + depth) = mapd (local__ren (lift__ren depth' (+depth))) (mapd (local__ren (+depth')) (σ2 (ix' - depth')))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) (ix' + depth) = (mapd (local__ren (lift__ren depth' (+depth))) ∘ mapd (local__ren (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) (ix' + depth) = mapd (local__ren (lift__ren depth' (+depth)) ⋆1 local__ren (+depth')) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

lift__sub depth' (lift__sub depth σ2) (ix' + depth) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false

(if (ix' + depth) `bound in` depth' then ret (ix' + depth) else rename (+depth') (if (ix' + depth - depth') `bound in` depth then ret (ix' + depth - depth') else rename (+depth) (σ2 (ix' + depth - depth' - depth)))) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false

rename (+depth') (if (ix' + depth - depth') `bound in` depth then ret (ix' + depth - depth') else rename (+depth) (σ2 (ix' + depth - depth' - depth))) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

rename (+depth') (rename (+depth) (σ2 (ix' + depth - depth' - depth))) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

rename (+depth') (rename (+depth) (σ2 (ix' - depth'))) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

(rename (+depth') ∘ rename (+depth)) (σ2 (ix' - depth')) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

rename ((+depth') ∘ (+depth)) (σ2 (ix' - depth')) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

mapd (local__ren ((+depth') ∘ (+depth))) (σ2 (ix' - depth')) = mapd (local__ren (lift__ren depth' (+depth) ∘ (+depth'))) (σ2 (ix' - depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

local__ren ((+depth') ∘ (+depth)) = local__ren (lift__ren depth' (+depth) ∘ (+depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

local__ren ((+depth') ○ (+depth)) = local__ren (lift__ren depth' (+depth) ○ (+depth'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false

(+depth') ○ (+depth) = lift__ren depth' (+depth) ○ (+depth')
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false
m: nat

(+depth') ((+depth) m) = lift__ren depth' (+depth) ((+depth') m)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false
m: nat

(+depth') ((+depth) m) = (if ((+depth') m) `bound in` depth' then (+depth') m else (+depth) ((+depth') m - depth') + depth')
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' >= depth'
Hbound0: ix' `bound in` depth' = false
Hord1: ix' + depth >= depth'
Hbound1: (ix' + depth) `bound in` depth' = false
Hord2: ix' + depth - depth' >= depth
Hbound2: (ix' + depth - depth') `bound in` depth = false
m: nat

depth' + (depth + m) = (if (depth' + m) `bound in` depth' then depth' + m else depth + (depth' + m - depth') + depth')
bound_induction.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub depth' (lift__sub depth σ2) ix' = mapd (local__ren (lift__ren depth' (+depth))) (ret ix')
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub depth' (lift__sub depth σ2) ix' = (mapd (local__ren (lift__ren depth' (+depth))) ∘ ret) ix'
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub depth' (lift__sub depth σ2) ix' = (ret ∘ local__ren (lift__ren depth' (+depth)) ∘ ret) ix'
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

(lift__sub depth' ∘ lift__sub depth) σ2 ix' = (ret ∘ local__ren (lift__ren depth' (+depth)) ∘ ret) ix'
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub (depth' + depth) σ2 ix' = (ret ∘ local__ren (lift__ren depth' (+depth)) ∘ ret) ix'
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub (depth' + depth) σ2 ix' = ret (local__ren (lift__ren depth' (+depth)) (ret ix'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub (depth' + depth) σ2 ix' = ret (local__ren (lift__ren depth' (+depth)) (0, ix'))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

lift__sub (depth' + depth) σ2 ix' = ret (lift__ren depth' (+depth) (ix' - 0) + 0)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true

(if ix' `bound in` (depth' + depth) then ret ix' else rename (+depth' + depth) (σ2 (ix' - (depth' + depth)))) = ret (lift__ren depth' (+depth) (ix' - 0) + 0)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true
Hord1: ix' < depth' + depth
Hbound1: ix' `bound in` (depth' + depth) = true

ret ix' = ret (lift__ren depth' (+depth) (ix' - 0) + 0)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true
Hord1: ix' < depth' + depth
Hbound1: ix' `bound in` (depth' + depth) = true

ix' = lift__ren depth' (+depth) (ix' - 0) + 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true
Hord1: ix' < depth' + depth
Hbound1: ix' `bound in` (depth' + depth) = true

ix' = (if (ix' - 0) `bound in` depth' then ix' - 0 else (+depth) (ix' - 0 - depth') + depth') + 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false
depth', ix': nat
Hord0: ix' < depth'
Hbound0: ix' `bound in` depth' = true
Hord1: ix' < depth' + depth
Hbound1: ix' `bound in` (depth' + depth) = true

ix' = (if ix' `bound in` depth' then ix' else (+depth) (ix' - depth') + depth') + 0
bound_induction. } } Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall σ2 σ1 : nat -> T nat, subst σ2 ∘ subst σ1 = subst (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall σ2 σ1 : nat -> T nat, subst σ2 ∘ subst σ1 = subst (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat

subst σ2 ∘ subst σ1 = subst (subst σ2 ∘ σ1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat

bindd (local__sub σ2) ∘ bindd (local__sub σ1) = bindd (local__sub (bindd (local__sub σ2) ∘ σ1))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat

bindd (local__sub σ2 ⋆5 local__sub σ1) = bindd (local__sub (bindd (local__sub σ2) ∘ σ1))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ2, σ1: nat -> T nat

bindd (local__sub (subst σ2 ∘ σ1)) = bindd (local__sub (bindd (local__sub σ2) ∘ σ1))
reflexivity. Qed. (** ** Substitution and renaming *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (n : nat) ρ, ret ∘ lift__ren n ρ = lift__sub n (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (n : nat) ρ, ret ∘ lift__ren n ρ = lift__sub n (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat

ret ∘ lift__ren n ρ = lift__sub n (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat

(ret ∘ lift__ren n ρ) m = lift__sub n (ret ∘ ρ) m
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat

ret (lift__ren n ρ m) = lift__sub n (ret ○ ρ) m
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat

ret (if m `bound in` n then m else ρ (m - n) + n) = (if m `bound in` n then ret m else rename (+n) (ret (ρ (m - n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat

ret (if m `bound in` n then m else ρ (m - n) + n) = (if m `bound in` n then ret m else rename (fun y : nat => n + y) (ret (ρ (m - n))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat
Hord: m >= n
Hbound: m `bound in` n = false

ret (ρ (m - n) + n) = rename (fun y : nat => n + y) (ret (ρ (m - n)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat
Hord: m >= n
Hbound: m `bound in` n = false

ret (ρ (m - n) + n) = ret (n + ρ (m - n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
ρ: nat -> nat
m: nat
Hord: m >= n
Hbound: m `bound in` n = false

ρ (m - n) + n = n + ρ (m - n)
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall ρ, ret ∘ local__ren ρ = local__sub (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall ρ, ret ∘ local__ren ρ = local__sub (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat

ret ∘ local__ren ρ = local__sub (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

(ret ∘ local__ren ρ) (depth, ix) = local__sub (ret ∘ ρ) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

ret (local__ren ρ (depth, ix)) = local__sub (ret ○ ρ) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

ret (lift__ren depth ρ ix) = lift__sub depth (ret ○ ρ) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

(ret ∘ lift__ren depth ρ) ix = lift__sub depth (ret ○ ρ) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

lift__sub depth (ret ∘ ρ) ix = lift__sub depth (ret ○ ρ) ix
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall ρ, rename ρ = subst (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall ρ, rename ρ = subst (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat

rename ρ = subst (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat

mapd (local__ren ρ) = bindd (local__sub (ret ∘ ρ))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat

bindd (ret ∘ local__ren ρ) = bindd (local__sub (ret ∘ ρ))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat

ret ∘ local__ren ρ = local__sub (ret ∘ ρ)
(* Fails with a universe error for some reason now rewrite (rename_to_subst_loc ρ). *)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat

ret ∘ local__ren ρ = local__sub (ret ∘ ρ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

(ret ∘ local__ren ρ) (depth, ix) = local__sub (ret ∘ ρ) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

ret (local__ren ρ (depth, ix)) = local__sub (ret ○ ρ) (depth, ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

ret (lift__ren depth ρ ix) = lift__sub depth (ret ○ ρ) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

ret (if ix `bound in` depth then ix else ρ (ix - depth) + depth) = (if ix `bound in` depth then ret ix else rename (+depth) (ret (ρ (ix - depth))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat

ret (if ix `bound in` depth then ix else ρ (ix - depth) + depth) = (if ix `bound in` depth then ret ix else rename (fun y : nat => depth + y) (ret (ρ (ix - depth))))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

ret (ρ (ix - depth) + depth) = rename (fun y : nat => depth + y) (ret (ρ (ix - depth)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
ρ: nat -> nat
depth, ix: nat
Hord: ix >= depth
Hbound: ix `bound in` depth = false

ret (ρ (ix - depth) + depth) = ret (depth + ρ (ix - depth))
fequal; lia. Qed. (** ** up__sub and lift__spec *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

up__sub σ = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

up__sub σ = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

(ret 0) ⋅ (rename (+1) ∘ σ) = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

(ret 0) ⋅ (subst (ret ∘ (+1)) ∘ σ) = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ σ)
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

lift__sub 1 = up__sub
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

lift__sub 1 = up__sub
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

lift__sub 1 σ ix = up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat

(if ix `bound in` 1 then ret ix else rename (+1) (σ (ix - 1))) = ((ret 0) ⋅ (rename (+1) ∘ σ)) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: ix >= 1
Hbound: ix `bound in` 1 = false

rename (+1) (σ (ix - 1)) = ((ret 0) ⋅ (rename (+1) ∘ σ)) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: ix < 1
Hbound: ix `bound in` 1 = true
ret ix = ((ret 0) ⋅ (rename (+1) ∘ σ)) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: ix >= 1
Hbound: ix `bound in` 1 = false

rename (+1) (σ (ix - 1)) = ((ret 0) ⋅ (rename (+1) ∘ σ)) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
Hord: 0 >= 1
Hbound: 0 `bound in` 1 = false

rename (+1) (σ (0 - 1)) = ((ret 0) ⋅ (rename (+1) ∘ σ)) 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false
rename (+1) (σ (S ix - 1)) = ((ret 0) ⋅ (rename (+1) ∘ σ)) (S ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
Hord: 0 >= 1
Hbound: 0 `bound in` 1 = false

rename (+1) (σ (0 - 1)) = ((ret 0) ⋅ (rename (+1) ∘ σ)) 0
false.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

rename (+1) (σ (S ix - 1)) = ((ret 0) ⋅ (rename (+1) ∘ σ)) (S ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: S ix >= 1
Hbound: (S ix) `bound in` 1 = false

rename (+1) (σ ix) = ((ret 0) ⋅ (rename (+1) ∘ σ)) (S ix)
reflexivity.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: ix < 1
Hbound: ix `bound in` 1 = true

ret ix = ((ret 0) ⋅ (rename (+1) ∘ σ)) ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
ix: nat
Hord: ix < 1
Hbound: ix = 0

ret ix = ((ret 0) ⋅ (rename (+1) ∘ σ)) ix
now subst. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (depth ix : nat) (σ : nat -> T nat), local__sub σ (depth, ix) = iterate depth up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (depth ix : nat) (σ : nat -> T nat), local__sub σ (depth, ix) = iterate depth up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
σ: nat -> T nat

local__sub σ (depth, ix) = iterate depth up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
σ: nat -> T nat

lift__sub depth σ ix = iterate depth up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
σ: nat -> T nat

iterate depth (lift__sub 1) σ ix = iterate depth up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
depth, ix: nat
σ: nat -> T nat

lift__sub 1 = up__sub
apply up_spec. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

local__sub σ ⦿ 1 = local__sub (up__sub σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

local__sub σ ⦿ 1 = local__sub (up__sub σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

local__sub (lift__sub 1 σ) = local__sub (up__sub σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

local__sub (up__sub σ) = local__sub (up__sub σ)
reflexivity. Qed. Definition bind_with_policy `{Bindd nat T U} (policy: (nat -> T nat) -> (nat -> T nat)) (σ: nat -> T nat): U nat -> U nat := bindd (fun '(depth, ix) => iterate depth policy σ ix).
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

subst σ = bind_with_policy up__sub σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

subst σ = bind_with_policy up__sub σ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

bindd (local__sub σ) = bindd (fun '(depth, ix) => iterate depth up__sub σ ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat

local__sub σ = (fun '(depth, ix) => iterate depth up__sub σ ix)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
depth, ix: nat

local__sub σ (depth, ix) = iterate depth up__sub σ ix
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
depth, ix: nat

iterate depth up__sub σ ix = iterate depth up__sub σ ix
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

iterate (S n) up__sub σ = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ iterate n up__sub σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

iterate (S n) up__sub σ = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ iterate n up__sub σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

up__sub (iterate n up__sub σ) = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ iterate n up__sub σ)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n: nat

(ret 0) ⋅ (subst (ret ∘ (+1)) ∘ iterate n up__sub σ) = (ret 0) ⋅ (subst (ret ∘ (+1)) ∘ iterate n up__sub σ)
reflexivity. Qed. (** ** Characterizing occurrence *) (********************************************************************)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (n1 ix1 : nat), ix1 `bound in` n1 = true -> (0, ix1) ∈d local__sub σ (n1, ix1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (n1 ix1 : nat), ix1 `bound in` n1 = true -> (0, ix1) ∈d local__sub σ (n1, ix1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n1, ix1: nat
H: ix1 `bound in` n1 = true

(0, ix1) ∈d local__sub σ (n1, ix1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n1, ix1: nat
H: ix1 `bound in` n1 = true

(0, ix1) ∈d (if ix1 `bound in` n1 then ret ix1 else rename (+n1) (σ (ix1 - n1)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n1, ix1: nat
H: true = true
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

(0, ix1) ∈d ret ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n1, ix1: nat
H: true = true
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

0 = Ƶ /\ ix1 = ix1
auto. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (n2 ix2 n1 ix1 : nat), (n2, ix2) ∈d local__sub σ (n1, ix1) -> ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (n2 ix2 n1 ix1 : nat), (n2, ix2) ∈d local__sub σ (n1, ix1) -> ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d local__sub σ (n1, ix1)

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d (if ix1 `bound in` n1 then ret ix1 else rename (+n1) (σ (ix1 - n1)))

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d rename (+n1) (σ (ix1 - n1))
Hord: ix1 >= n1
Hbound: ix1 `bound in` n1 = false

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d ret ix1
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true
ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d rename (+n1) (σ (ix1 - n1))
Hord: ix1 >= n1
Hbound: ix1 `bound in` n1 = false

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))
Hord: ix1 >= n1
Hbound: ix1 `bound in` n1 = false

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
tauto.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d ret ix1
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d ret ix1
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

ix1 >= n1 /\ (exists l1 : nat, (n2, l1) ∈d σ (ix1 - n1) /\ ix2 = (if l1 `bound in` n2 then l1 else n2 + (+n1) (l1 - n2))) \/ ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: (n2, ix2) ∈d ret ix1
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n2, ix2, n1, ix1: nat
H: n2 = Ƶ /\ ix2 = ix1
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

ix1 < n1 /\ n2 = 0 /\ ix2 = ix1
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
n1, ix1: nat
H: Ƶ = Ƶ /\ ix1 = ix1
Hord: ix1 < n1
Hbound: ix1 `bound in` n1 = true

ix1 < n1 /\ Ƶ = 0 /\ ix1 = ix1
intuition. } Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (l n : nat) (t : U nat) (σ : nat -> T nat), (n, l) ∈d subst σ t <-> (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (l n : nat) (t : U nat) (σ : nat -> T nat), (n, l) ∈d subst σ t <-> (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(n, l) ∈d subst σ t <-> (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(n, l) ∈d bindd (local__sub σ) t <-> (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
now rewrite ind_bindd_iff'. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (l n : nat) (t : U nat) (σ : nat -> T nat), (n, l) ∈d subst σ t <-> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (l n : nat) (t : U nat) (σ : nat -> T nat), (n, l) ∈d subst σ t <-> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(n, l) ∈d subst σ t <-> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(n, l) ∈d bindd (local__sub σ) t <-> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2) <-> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2) -> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2) -> exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2) -> (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d local__sub σ (n1, a)
H3: n = n1 ● n2

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d local__sub σ (n1, a)
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d (if a `bound in` n1 then ret a else rename (+n1) (σ (a - n1)))
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d rename (+n1) (σ (a - n1))
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a >= n1
Hbound: a `bound in` n1 = false

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d ret a
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a < n1
Hbound: a `bound in` n1 = true
(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d rename (+n1) (σ (a - n1))
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a >= n1
Hbound: a `bound in` n1 = false

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d rename (+n1) (σ (a - n1))
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a >= n1
Hbound: a `bound in` n1 = false

exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d rename (+n1) (σ (a - n1))
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a >= n1
Hbound: a `bound in` n1 = false

(n1, a) ∈d t /\ (n2, l) ∈d local__sub σ (n1, a) /\ n = n1 + n2
auto.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: (n2, l) ∈d ret a
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a < n1
Hbound: a `bound in` n1 = true

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
n1, n2, a: nat
H1: (n1, a) ∈d t
H2: n2 = Ƶ /\ l = a
H3: n = n1 ● n2
H2copy: (n2, l) ∈d local__sub σ (n1, a)
Hord: a < n1
Hbound: a `bound in` n1 = true

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: U nat
σ: nat -> T nat
n1, a: nat
H1: (n1, a) ∈d t
H2: Ƶ = Ƶ /\ a = a
H2copy: (Ƶ, a) ∈d local__sub σ (n1, a)
Hord: a < n1
Hbound: a `bound in` n1 = true

(n1 ● Ƶ, a) ∈d t /\ a `bound in` (n1 ● Ƶ) = true \/ (exists n2 n3 l1 : nat, (n2, l1) ∈d t /\ (n3, a) ∈d local__sub σ (n2, l1) /\ n1 ● Ƶ = n2 + n3)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: U nat
σ: nat -> T nat
n1, a: nat
H1: (n1, a) ∈d t
H2: Ƶ = Ƶ /\ a = a
H2copy: (Ƶ, a) ∈d local__sub σ (n1, a)
Hord: a < n1
Hbound: a `bound in` n1 = true

(n1, a) ∈d t /\ a `bound in` n1 = true \/ (exists n2 n3 l1 : nat, (n2, l1) ∈d t /\ (n3, a) ∈d local__sub σ (n2, l1) /\ n1 = n2 + n3)
now left.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat

(n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2) -> exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true \/ (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2)

exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2
exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

(n, l) ∈d t /\ (0, l) ∈d local__sub σ (n, l) /\ n = n ● 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

(n, l) ∈d t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true
(0, l) ∈d local__sub σ (n, l)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true
n = n ● 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

(n, l) ∈d t
tauto.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

(0, l) ∈d local__sub σ (n, l)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true
n = n ● 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

(0, l) ∈d local__sub σ (n, l)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

(0, l) ∈d (if l `bound in` n then ret l else rename (+n) (σ (l - n)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ true = true
Hord: l < n
Hbound: l `bound in` n = true

(0, l) ∈d ret l
now rewrite ind_ret_iff.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

n = n ● 0
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: (n, l) ∈d t /\ l `bound in` n = true

n = n ● 0
easy. }
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
l, n: nat
t: U nat
σ: nat -> T nat
H: exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, l) ∈d local__sub σ (n1, l1) /\ n = n1 + n2

exists w1 w2 a : nat, (w1, a) ∈d t /\ (w2, l) ∈d local__sub σ (w1, a) /\ n = w1 ● w2
assumption. Qed. End theory. (** * Notations *) (**********************************************************************) Module Notations. Notation "↑" := S. Notation "'⇑'" := up__sub. Notation "'⇑__ren'" := up__ren. Notation "f ';' g" := (kc1 g f) (at level 30). Infix "⋅" := (scons) (at level 10). Notation "( + x )" := (lift x) (format "( + x )"). End Notations. Import Notations. (** * Other lemmas *) (**********************************************************************) Section theory. Context `{ret_inst: Return T} `{Map_T_inst: Map T} `{Mapd_T_inst: Mapd nat T} `{Traverse_T_inst: Traverse T} `{Bind_T_inst: Bind T T} `{Mapdt_T_inst: Mapdt nat T} `{Bindd_T_inst: Bindd nat T T} `{Bindt_T_inst: Bindt T T} `{Binddt_T_inst: Binddt nat T T} `{! Compat_Map_Binddt nat T T} `{! Compat_Mapd_Binddt nat T T} `{! Compat_Traverse_Binddt nat T T} `{! Compat_Bind_Binddt nat T T} `{! Compat_Mapdt_Binddt nat T T} `{! Compat_Bindd_Binddt nat T T} `{! Compat_Bindt_Binddt nat T T} `{Monad_inst: ! DecoratedTraversableMonad nat T}. Context `{Map_U_inst: Map U} `{Mapd_U_inst: Mapd nat U} `{Traverse_U_inst: Traverse U} `{Bind_U_inst: Bind T U} `{Mapdt_U_inst: Mapdt nat U} `{Bindd_U_inst: Bindd nat T U} `{Bindt_U_inst: Bindt T U} `{Binddt_U_inst: Binddt nat T U} `{! Compat_Map_Binddt nat T U} `{! Compat_Mapd_Binddt nat T U} `{! Compat_Traverse_Binddt nat T U} `{! Compat_Bind_Binddt nat T U} `{! Compat_Mapdt_Binddt nat T U} `{! Compat_Bindd_Binddt nat T U} `{! Compat_Bindt_Binddt nat T U} `{Module_inst: ! DecoratedTraversableRightPreModule nat T U (unit := Monoid_unit_zero) (op := Monoid_op_plus)}.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat

decidable_pred (fun p : nat * nat => cl_at_loc gap p)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat

decidable_pred (fun p : nat * nat => cl_at_loc gap p)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat

forall a : nat * nat, Decidable.decidable (cl_at_loc gap a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap, p, n: nat

Decidable.decidable (cl_at_loc gap (p, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap, p, n: nat

Decidable.decidable (bound_within gap n p)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap, p, n: nat

Decidable.decidable (n < p + gap)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap, p, n: nat

n < p + gap \/ ~ n < p + gap
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

cl_at gap t = (forall d n : nat, (d, n) ∈d t -> cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

cl_at gap t = (forall d n : nat, (d, n) ∈d t -> cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

Forall_ctx (cl_at_loc gap) t = (forall d n : nat, (d, n) ∈d t -> cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

Forall_ctx (cl_at_loc gap) t <-> (forall d n : nat, (d, n) ∈d t -> cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

(forall e a : nat, (e, a) ∈d t -> cl_at_loc gap (e, a)) <-> (forall d n : nat, (d, n) ∈d t -> cl_at_loc gap (d, n))
reflexivity. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

cl_at gap t \/ ~ cl_at gap t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

cl_at gap t \/ ~ cl_at gap t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

decidable_pred (cl_at_loc gap)
apply cl_at_loc_dec. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

(~ cl_at gap t) = (exists d n : nat, (d, n) ∈d t /\ ~ cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

(~ cl_at gap t) = (exists d n : nat, (d, n) ∈d t /\ ~ cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

(~ Forall_ctx (cl_at_loc gap) t) = (exists d n : nat, (d, n) ∈d t /\ ~ cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

~ Forall_ctx (cl_at_loc gap) t <-> (exists d n : nat, (d, n) ∈d t /\ ~ cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

(exists e a : nat, (e, a) ∈d t /\ ~ cl_at_loc gap (e, a)) <-> (exists d n : nat, (d, n) ∈d t /\ ~ cl_at_loc gap (d, n))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat
decidable_pred (cl_at_loc gap)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
gap: nat
t: U nat

decidable_pred (cl_at_loc gap)
apply cl_at_loc_dec. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (k d1 i1 : nat), (forall n : nat, cl_at k (σ n)) -> cl_at (k + d1) (lift__sub d1 σ i1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (σ : nat -> T nat) (k d1 i1 : nat), (forall n : nat, cl_at k (σ n)) -> cl_at (k + d1) (lift__sub d1 σ i1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n : nat, cl_at k (σ n)

cl_at (k + d1) (lift__sub d1 σ i1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n : nat, Forall_ctx (fun p : nat * nat => let (depth, ix) := p in bound_within k ix depth) (σ n)

Forall_ctx (fun p : nat * nat => let (depth, ix) := p in bound_within (k + d1) ix depth) (lift__sub d1 σ i1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n : nat, Forall_ctx (fun p : nat * nat => let (depth, ix) := p in bound_within k ix depth) (σ n)

forall e a : nat, (e, a) ∈d lift__sub d1 σ i1 -> bound_within (k + d1) a e
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> bound_within k a e

forall e a : nat, (e, a) ∈d lift__sub d1 σ i1 -> bound_within (k + d1) a e
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k

forall e a : nat, (e, a) ∈d lift__sub d1 σ i1 -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k

forall e a : nat, (e, a) ∈d (if i1 `bound in` d1 then ret i1 else rename (+d1) (σ (i1 - d1))) -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

forall e a : nat, (e, a) ∈d rename (+d1) (σ (i1 - d1)) -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true
forall e a : nat, (e, a) ∈d ret i1 -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

forall e a : nat, (e, a) ∈d rename (+d1) (σ (i1 - d1)) -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
e, a: nat

(e, a) ∈d rename (+d1) (σ (i1 - d1)) -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
e, a: nat

(exists l1 : nat, (e, l1) ∈d σ (i1 - d1) /\ a = (if l1 `bound in` e then l1 else e + (+d1) (l1 - e))) -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
e, a, l1: nat
Hin: (e, l1) ∈d σ (i1 - d1)
Heq: a = (if l1 `bound in` e then l1 else e + (+d1) (l1 - e))

a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
e, l1: nat
Hin: (e, l1) ∈d σ (i1 - d1)

(if l1 `bound in` e then l1 else e + (+d1) (l1 - e)) < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
e, l1: nat
Hin: (e, l1) ∈d σ (i1 - d1)
Hord0: l1 >= e
Hbound0: l1 `bound in` e = false

e + (+d1) (l1 - e) < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
e, l1: nat
Hin: (e, l1) ∈d σ (i1 - d1)
Hord0: l1 >= e
Hbound0: l1 `bound in` e = false

e + (d1 + (l1 - e)) < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1, e, l1: nat
Hpremise: l1 < e + k
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false
Hin: (e, l1) ∈d σ (i1 - d1)
Hord0: l1 >= e
Hbound0: l1 `bound in` e = false

e + (d1 + (l1 - e)) < e + (k + d1)
lia.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

forall e a : nat, (e, a) ∈d ret i1 -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

forall e a : nat, e = Ƶ /\ a = i1 -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

forall e a : nat, e = 0 /\ a = i1 -> a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true
e, a: nat
HeZ: e = 0
Hai1: a = i1

a < e + (k + d1)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
σ: nat -> T nat
k, d1, i1: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

i1 < 0 + (k + d1)
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (t : T nat) (σ : nat -> T nat) (k : nat), (forall n : nat, cl_at k (σ n)) -> cl_at k (subst σ t)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall (t : T nat) (σ : nat -> T nat) (k : nat), (forall n : nat, cl_at k (σ n)) -> cl_at k (subst σ t)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n : nat, cl_at k (σ n)

cl_at k (subst σ t)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n : nat, Forall_ctx (cl_at_loc k) (σ n)

Forall_ctx (cl_at_loc k) (subst σ t)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n : nat, Forall_ctx (fun p : nat * nat => let (depth, ix) := p in bound_within k ix depth) (σ n)

Forall_ctx (fun p : nat * nat => let (depth, ix) := p in bound_within k ix depth) (subst σ t)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n : nat, Forall_ctx (fun p : nat * nat => let (depth, ix) := p in ix < depth + k) (σ n)

Forall_ctx (fun p : nat * nat => let (depth, ix) := p in ix < depth + k) (subst σ t)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n : nat, Forall_ctx (fun p : nat * nat => let (depth, ix) := p in ix < depth + k) (σ n)

forall e a : nat, (e, a) ∈d subst σ t -> a < e + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k

forall e a : nat, (e, a) ∈d subst σ t -> a < e + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k

forall e a : nat, (exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, a) ∈d local__sub σ (n1, l1) /\ e = n1 + n2) -> a < e + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
e, a: nat
Hin: exists n1 n2 l1 : nat, (n1, l1) ∈d t /\ (n2, a) ∈d local__sub σ (n1, l1) /\ e = n1 + n2

a < e + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
e, a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d local__sub σ (d1, i1)
H3: e = d1 + d2

a < e + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d local__sub σ (d1, i1)

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d (if i1 `bound in` d1 then ret i1 else rename (+d1) (σ (i1 - d1)))

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d rename (+d1) (σ (i1 - d1))
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d ret i1
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true
a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d rename (+d1) (σ (i1 - d1))
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: exists l1 : nat, (d2, l1) ∈d σ (i1 - d1) /\ a = (if l1 `bound in` d2 then l1 else d2 + (+d1) (l1 - d2))
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
d1, d2, i1: nat
H1: (d1, i1) ∈d t
x: nat
H: (d2, x) ∈d σ (i1 - d1)
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

(if x `bound in` d2 then x else d2 + (+d1) (x - d2)) < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
d1, d2, i1: nat
H1: (d1, i1) ∈d t
x: nat
H: (d2, x) ∈d σ (i1 - d1)
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

(if x `bound in` d2 then x else d2 + (d1 + (x - d2))) < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k, d2, x: nat
Hpremise: x < d2 + k
d1, i1: nat
H1: (d1, i1) ∈d t
H: (d2, x) ∈d σ (i1 - d1)
Hord: i1 >= d1
Hbound: i1 `bound in` d1 = false

(if x `bound in` d2 then x else d2 + (d1 + (x - d2))) < d1 + d2 + k
bound_induction.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: (d2, a) ∈d ret i1
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: d2 = Ƶ /\ a = i1
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
a, d1, d2, i1: nat
H1: (d1, i1) ∈d t
H2: d2 = Ƶ /\ a = i1
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true
H: d2 = Ƶ
H0: a = i1

a < d1 + d2 + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
d1, i1: nat
H1: (d1, i1) ∈d t
H2: Ƶ = Ƶ /\ i1 = i1
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

i1 < d1 + Ƶ + k
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
t: T nat
σ: nat -> T nat
k: nat
Hpremise: forall n e a : nat, (e, a) ∈d σ n -> a < e + k
d1, i1: nat
H1: (d1, i1) ∈d t
H2: Ƶ = Ƶ /\ i1 = i1
Hord: i1 < d1
Hbound: i1 `bound in` d1 = true

i1 < d1 + 0 + k
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n : nat, ~ cl_at n (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n : nat, ~ cl_at n (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat

~ cl_at n (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: cl_at n (ret n)

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: Forall_ctx (cl_at_loc n) (ret n)

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: forall e a : nat, (e, a) ∈d ret n -> cl_at_loc n (e, a)

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: (0, n) ∈d ret n -> cl_at_loc n (0, n)

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: 0 = Ƶ /\ n = n -> cl_at_loc n (0, n)

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: cl_at_loc n (0, n)

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: bound_within n n 0

False
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: n < 0 + n

False
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n : nat, cl_at (↑ n) (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U

forall n : nat, cl_at (↑ n) (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat

cl_at (↑ n) (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat

Forall_ctx (cl_at_loc (↑ n)) (ret n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat

forall e a : nat, (e, a) ∈d ret n -> cl_at_loc (↑ n) (e, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, e, a: nat
H: (e, a) ∈d ret n

cl_at_loc (↑ n) (e, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, e, a: nat
H: e = Ƶ /\ a = n

cl_at_loc (↑ n) (e, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n, e, a: nat
H: e = Ƶ /\ a = n
H0: e = Ƶ
H1: a = n

cl_at_loc (↑ n) (e, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: Ƶ = Ƶ /\ n = n

cl_at_loc (↑ n) (Ƶ, n)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: Ƶ = Ƶ /\ n = n

bound_within (↑ n) n Ƶ
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: Ƶ = Ƶ /\ n = n

n < Ƶ + ↑ n
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
n: nat
H: Ƶ = Ƶ /\ n = n

↑ n <= ↑ n
lia. Qed.
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat

cl_at k t -> (forall i : nat, i < k -> σ1 i = σ2 i) -> subst σ1 t = subst σ2 t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat

cl_at k t -> (forall i : nat, i < k -> σ1 i = σ2 i) -> subst σ1 t = subst σ2 t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat

Forall_ctx (cl_at_loc k) t -> (forall i : nat, i < k -> σ1 i = σ2 i) -> bindd (local__sub σ1) t = bindd (local__sub σ2) t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
Hclosed: Forall_ctx (cl_at_loc k) t
Hpw: forall i : nat, i < k -> σ1 i = σ2 i

bindd (local__sub σ1) t = bindd (local__sub σ2) t
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
Hclosed: Forall_ctx (cl_at_loc k) t
Hpw: forall i : nat, i < k -> σ1 i = σ2 i

forall w a : nat, (w, a) ∈d t -> local__sub σ1 (w, a) = local__sub σ2 (w, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
Hclosed: Forall_ctx (cl_at_loc k) t
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
w, a: nat
Hin: (w, a) ∈d t

local__sub σ1 (w, a) = local__sub σ2 (w, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
Hclosed: forall e a : nat, (e, a) ∈d t -> cl_at_loc k (e, a)
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
w, a: nat
Hin: (w, a) ∈d t

local__sub σ1 (w, a) = local__sub σ2 (w, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
w, a: nat
Hclosed: cl_at_loc k (w, a)
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
Hin: (w, a) ∈d t

local__sub σ1 (w, a) = local__sub σ2 (w, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
w, a: nat
Hclosed: a < w + k
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
Hin: (w, a) ∈d t

local__sub σ1 (w, a) = local__sub σ2 (w, a)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
w, a: nat
Hclosed: a < w + k
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
Hin: (w, a) ∈d t

(if a `bound in` w then ret a else rename (+w) (σ1 (a - w))) = (if a `bound in` w then ret a else rename (+w) (σ2 (a - w)))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
w, a: nat
Hclosed: a < w + k
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
Hin: (w, a) ∈d t
Hord: a >= w
Hbound: a `bound in` w = false

rename (+w) (σ1 (a - w)) = rename (+w) (σ2 (a - w))
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
w, a: nat
Hclosed: a < w + k
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
Hin: (w, a) ∈d t
Hord: a >= w
Hbound: a `bound in` w = false

σ1 (a - w) = σ2 (a - w)
T: Type -> Type
ret_inst: Return T
Map_T_inst: Map T
Mapd_T_inst: Mapd nat T
Traverse_T_inst: Traverse T
Bind_T_inst: Bind T T
Mapdt_T_inst: Mapdt nat T
Bindd_T_inst: Bindd nat T T
Bindt_T_inst: Bindt T T
Binddt_T_inst: Binddt nat T T
Compat_Map_Binddt0: Compat_Map_Binddt nat T T
Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T
Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T T
Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T
Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T
Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T
Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T
Monad_inst: DecoratedTraversableMonad nat T
U: Type -> Type
Map_U_inst: Map U
Mapd_U_inst: Mapd nat U
Traverse_U_inst: Traverse U
Bind_U_inst: Bind T U
Mapdt_U_inst: Mapdt nat U
Bindd_U_inst: Bindd nat T U
Bindt_U_inst: Bindt T U
Binddt_U_inst: Binddt nat T U
Compat_Map_Binddt1: Compat_Map_Binddt nat T U
Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U
Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T U
Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U
Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U
Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U
Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U
Module_inst: DecoratedTraversableRightPreModule nat T U
k: nat
σ1, σ2: nat -> T nat
t: T nat
w, a: nat
Hclosed: a < w + k
Hpw: forall i : nat, i < k -> σ1 i = σ2 i
Hin: (w, a) ∈d t
Hord: a >= w
Hbound: a `bound in` w = false

a - w < k
lia. Qed. End theory.