Module KL := KnotHered_Lemmas(K).
Export K.
Export KL.
(* Let's define our typing system on values *)
Definition mtype : Type := knot.
Definition world : Type := (mtype * value)%type.
Definition world_ag : ageable world :=
ag_prod mtype value ag_knot.
Existing Instance world_ag.
Definition knot_extends (k1 k2 : knot) : Prop :=
match (unsquash k1, unsquash k2) with
((n, psi), (n', psi')) => n = n' /\ forall a, (psi a = None) \/ (psi' a = psi a)
end.
Definition R_extends (w1 w2 : world) : Prop :=
match (w1, w2) with
((k1, v1), (k2, v2)) => knot_extends k1 k2 /\ v1 = v2
end.
(* Lemma extends_fashionable : forall x y, R_extends x y -> fashionR x y. *)
Definition knot_contracts := transp _ knot_extends.

Lemma knot_contracts_age_commute1 : forall x y z,
age x y /\ knot_contracts y z -> exists y',
knot_contracts x y' /\ age y' z.