Inductive srt_ecc : Set :=
    | Sprop : srt_ecc
    | Stype : nat -> srt_ecc.Inductive srt_ecc : Set :=
    | Sprop : srt_ecc
    | Stype : nat -> srt_ecc.Inductive srt_ecc : Set :=
    | Sprop : srt_ecc
    | Stype : nat -> srt_ecc.Inductive axiom_ecc : srt_ecc -> srt_ecc -> Prop :=
    | ax_prop : forall (n : nat), axiom_ecc Sprop (Stype n)
    | ax_type : forall (n m : nat), n < m -> axiom_ecc (Stype n) (Stype m).Inductive axiom_ecc : srt_ecc -> srt_ecc -> Prop :=
    | ax_prop : forall (n : nat), axiom_ecc Sprop (Stype n)
    | ax_type : forall (n m : nat), n < m -> axiom_ecc (Stype n) (Stype m).Inductive axiom_ecc : srt_ecc -> srt_ecc -> Prop :=
    | ax_prop : forall (n : nat), axiom_ecc Sprop (Stype n)
    | ax_type : forall (n m : nat), n < m -> axiom_ecc (Stype n) (Stype m).Inductive rules_ecc : srt_ecc -> srt_ecc -> srt_ecc -> Prop :=
    | rule_prop_l : forall (s : srt_ecc), rules_ecc Sprop s s
    | rule_prop_r : forall (s : srt_ecc), rules_ecc s Sprop Sprop
    | rule_type :
        forall (n m p : nat),
        n <= p -> m <= p -> rules_ecc (Stype n) (Stype m) (Stype p).Inductive rules_ecc : srt_ecc -> srt_ecc -> srt_ecc -> Prop :=
    | rule_prop_l : forall (s : srt_ecc), rules_ecc Sprop s s
    | rule_prop_r : forall (s : srt_ecc), rules_ecc s Sprop Sprop
    | rule_type :
        forall (n m p : nat),
        n <= p -> m <= p -> rules_ecc (Stype n) (Stype m) (Stype p).Inductive rules_ecc : srt_ecc -> srt_ecc -> srt_ecc -> Prop :=
    | rule_prop_l : forall (s : srt_ecc), rules_ecc Sprop s s
    | rule_prop_r : forall (s : srt_ecc), rules_ecc s Sprop Sprop
    | rule_type :
        forall (n m p : nat),
        n <= p -> m <= p -> rules_ecc (Stype n) (Stype m) (Stype p).Inductive rules_ecc : srt_ecc -> srt_ecc -> srt_ecc -> Prop :=
    | rule_prop_l : forall (s : srt_ecc), rules_ecc Sprop s s
    | rule_prop_r : forall (s : srt_ecc), rules_ecc s Sprop Sprop
    | rule_type :
        forall (n m p : nat),
        n <= p -> m <= p -> rules_ecc (Stype n) (Stype m) (Stype p).Inductive univ_ecc : srt_ecc -> srt_ecc -> Prop :=
      univ_type :
        forall (n m : nat),
        n <= m -> univ_ecc (Stype n) (Stype m).Inductive univ_ecc : srt_ecc -> srt_ecc -> Prop :=
      univ_type :
        forall (n m : nat),
        n <= m -> univ_ecc (Stype n) (Stype m).Definition univ : relation srt_ecc := clos_refl_trans _ univ_ecc.Inductive inv_univ : srt_ecc -> srt_ecc -> Prop :=
    | iu_prop : inv_univ Sprop Sprop
    | iu_type :
        forall (n m : nat),
        n <= m -> inv_univ (Stype n) (Stype m).Inductive inv_univ : srt_ecc -> srt_ecc -> Prop :=
    | iu_prop : inv_univ Sprop Sprop
    | iu_type :
        forall (n m : nat),
        n <= m -> inv_univ (Stype n) (Stype m).Inductive inv_univ : srt_ecc -> srt_ecc -> Prop :=
    | iu_prop : inv_univ Sprop Sprop
    | iu_type :
        forall (n m : nat),
        n <= m -> inv_univ (Stype n) (Stype m).

Lemma univ_inv : forall s s' : srt_ecc, univ s s' -> forall P : Prop, (inv_univ s s' -> P) -> P.