diff --git a/coq/typing.v b/coq/typing.v
index 7c22901..05e9b2e 100644
--- a/coq/typing.v
+++ b/coq/typing.v
@@ -81,6 +81,73 @@ Definition is_well_typed (e:expr_term) : Prop :=
   Γ |- e \is τ
 .
 
+Inductive translate_typing : context -> expr_term -> type_term -> expr_term -> Prop :=
+  | Expand_Var : forall Γ x τ,
+    (Γ |- (expr_var x) \is τ) ->
+    (translate_typing Γ (expr_var x) τ (expr_var x))
+
+  | Expand_Let : forall Γ x e e' t t' σ τ,
+    (Γ |- e \is σ) ->
+    ((ctx_assign x σ Γ) |- t \is τ) ->
+    (translate_typing Γ e σ e') ->
+    (translate_typing (ctx_assign x σ Γ) t τ t') ->
+    (translate_typing Γ (expr_let x e t) τ (expr_let x e' t'))
+
+  | Expand_TypeAbs : forall Γ α e e' τ,
+    (Γ |- e \is τ) ->
+    (translate_typing Γ e τ e') ->
+    (translate_typing Γ
+      (expr_ty_abs α e)
+      (type_univ α τ)
+      (expr_ty_abs α e'))
+
+  | Expand_TypeApp : forall Γ e e' σ α τ,
+    (Γ |- e \is (type_univ α τ)) ->
+    (translate_typing Γ e τ e') ->
+    (translate_typing Γ (expr_ty_app e τ) (type_subst α σ τ) (expr_ty_app e' τ))
+
+  | Expand_Abs : forall Γ x σ e e' τ,
+    ((ctx_assign x σ Γ) |- e \is τ) ->
+    (Γ |- (expr_abs x σ e) \is (type_fun σ τ)) ->
+    (translate_typing (ctx_assign x σ Γ) e τ e') ->
+    (translate_typing Γ (expr_abs x σ e) (type_fun σ τ) (expr_abs x σ e'))
+
+  | Expand_MorphAbs : forall Γ x σ e e' τ,
+    ((ctx_assign x σ Γ) |- e \is τ) ->
+    (Γ |- (expr_abs x σ e) \is (type_fun σ τ)) ->
+    (translate_typing (ctx_assign x σ Γ) e τ e') ->
+    (translate_typing Γ (expr_morph x σ e) (type_morph σ τ) (expr_morph x σ e'))
+
+  | Expand_App : forall Γ f f' a a' m σ τ σ',
+    (Γ |- f \is (type_fun σ τ)) ->
+    (Γ |- a \is σ') ->
+    (Γ |- σ' ~> σ) ->
+    (translate_typing Γ f (type_fun σ τ) f') ->
+    (translate_typing Γ a σ' a') ->
+    (translate_morphism_path Γ σ' σ m) ->
+    (translate_typing Γ (expr_app f a) τ (expr_app f' (expr_app m a')))
+
+  | Expand_MorphFun : forall Γ f f' σ τ,
+    (Γ |- f \is (type_morph σ τ)) ->
+    (Γ |- f \is (type_fun σ τ)) ->
+    (translate_typing Γ f (type_morph σ τ) f') ->
+    (translate_typing Γ f (type_fun σ τ) f')
+
+  | Expand_Ascend : forall Γ e e' τ τ',
+    (Γ |- e \is τ) ->
+    (τ' :<= τ) ->
+    (Γ |- (expr_ascend τ' e) \is τ') ->
+    (translate_typing Γ e τ e') ->
+    (translate_typing Γ (expr_ascend τ' e) τ' (expr_ascend τ' e'))
+
+  | Expand_Descend : forall Γ e e' τ τ',
+    (Γ |- e \is τ) ->
+    (τ :<= τ') ->
+    (Γ |- e \is τ') ->
+    (translate_typing Γ e τ e') ->
+    (translate_typing Γ e τ' e')
+.
+
 (* Examples *)
 
 Example typing1 :