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 Require Export
Backends.DB.DB
Simplification.Support
Simplification.Binddt
Simplification.Tests.Support.#[local] Generalizable VariablesT U.Import DB.Notations.Import DecoratedTraversableMonad.UsefulInstances.Import Classes.Kleisli.Theory.DecoratedTraversableMonad.(** * Extra lemmas *)(******************************************************************************)Sectiondb_simplification_lemmas.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
forallt : U nat, subst ret t = 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
forallt : U nat, subst ret t = t
nowrewrite subst_id.Qed.(* used for simpl_db *)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type
forall (f : T nat -> X) (σ : nat -> T nat),
f ∘ subst σ ∘ ret = f ∘ σ
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type
forall (f : T nat -> X) (σ : nat -> T nat),
f ∘ subst σ ∘ ret = f ∘ σ
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type f: T nat -> X σ: nat -> T nat
f ∘ subst σ ∘ ret = f ∘ σ
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type f: T nat -> X σ: nat -> T nat
f ∘ (subst σ ∘ ret) = f ∘ σ
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type f: T nat -> X σ: nat -> T nat
f ∘ σ = f ∘ σ
reflexivity.Qed.(* Autosubst: subst_compR *)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U Compat_Bindd_Binddt1: Compat_Bindd_Binddt nat T U Compat_Bindt_Binddt1: Compat_Bindt_Binddt nat T U Module_inst: DecoratedTraversableRightPreModule nat T
U X: Type
forall (f : U nat -> X) (σ2σ1 : nat -> T nat),
f ∘ subst σ2 ∘ subst σ1 = f ∘ 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 X: Type
forall (f : U nat -> X) (σ2σ1 : nat -> T nat),
f ∘ subst σ2 ∘ subst σ1 = f ∘ 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 X: Type f: U nat -> X σ2, σ1: nat -> T nat
f ∘ subst σ2 ∘ subst σ1 = f ∘ 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 X: Type f: U nat -> X σ2, σ1: nat -> T nat
f ∘ (subst σ2 ∘ subst σ1) = f ∘ 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 X: Type f: U nat -> X σ2, σ1: nat -> T nat
f ∘ subst (subst σ2 ∘ σ1) = f ∘ subst (subst σ2 ∘ σ1)
reflexivity.Qed.(* Autosubst: subst_compI *)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Mapd_T_inst: Mapd nat T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Mapdt_T_inst: Mapdt nat T Bindd_T_inst: Bindd nat T T Bindt_T_inst: Bindt T T Binddt_T_inst: Binddt nat T T Compat_Map_Binddt0: Compat_Map_Binddt nat T T Compat_Mapd_Binddt0: Compat_Mapd_Binddt nat T T Compat_Traverse_Binddt0: Compat_Traverse_Binddt nat T
T Compat_Bind_Binddt0: Compat_Bind_Binddt nat T T Compat_Mapdt_Binddt0: Compat_Mapdt_Binddt nat T T Compat_Bindd_Binddt0: Compat_Bindd_Binddt nat T T Compat_Bindt_Binddt0: Compat_Bindt_Binddt nat T T Monad_inst: DecoratedTraversableMonad nat T U: Type -> Type Map_U_inst: Map U Mapd_U_inst: Mapd nat U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Mapdt_U_inst: Mapdt nat U Bindd_U_inst: Bindd nat T U Bindt_U_inst: Bindt T U Binddt_U_inst: Binddt nat T U Compat_Map_Binddt1: Compat_Map_Binddt nat T U Compat_Mapd_Binddt1: Compat_Mapd_Binddt nat T U Compat_Traverse_Binddt1: Compat_Traverse_Binddt nat T
U Compat_Bind_Binddt1: Compat_Bind_Binddt nat T U Compat_Mapdt_Binddt1: Compat_Mapdt_Binddt nat T U 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) (t : U nat),
subst σ2 (subst σ1 t) = subst (subst σ2 ∘ σ1) 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 (σ2σ1 : nat -> T nat) (t : U nat),
subst σ2 (subst σ1 t) = subst (subst σ2 ∘ σ1) 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 t: U nat
subst σ2 (subst σ1 t) = subst (subst σ2 ∘ σ1) 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 t: U nat
(subst σ2 ∘ subst σ1) t = subst (subst σ2 ∘ σ1) 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 t: U nat
subst (subst σ2 ∘ σ1) t = subst (subst σ2 ∘ σ1) t
reflexivity.Qed.Enddb_simplification_lemmas.(** * Unfolding up *)(******************************************************************************)Ltacunfold_up :=
rewrite?up__sub_unfold;
(* up__sub σ = ret 0 ⋅ (subst (ret ∘ (+1)) ∘ σ). *)unfold up__ren.(** * Simplifying renaming via unfolding *)(******************************************************************************)