Section stratifies.
Variable Q:knot * other -> Prop.
Variable HQ:hereditary ko_age Q.
Fixpoint stratifies (n:nat) : sinv n -> Prop :=
match n as n' return sinv n' -> Prop with
| 0 => fun _ => True
| S n' => fun (p:sinv (S n')) =>
stratifies n' (fst (proj1_sig p)) /\
forall (k:F (sinv n')) (o:other), snd (proj1_sig p) (k,o) <-> Q (existT (F oo sinv) n' k,o)
end.

(* Specifications: *)
Lemma stratifies_unique : forall n p1 p2,
stratifies n p1 ->
stratifies n p2 ->
p1 = p2.