module TypeAlias; inductive T { t : T; }; inductive T2 { t2 : T2; }; alias : Type; alias ≔ T; x : alias; x ≔ t; id : Type → Type; id x ≔ x; infixr 9 ⊙; ⊙ : (Type → Type) → (Type → Type) → Type → Type; ⊙ f g x ≔ f (g x); x2 : (id ⊙ id) alias; x2 ≔ t; flip : (Type → Type → Type) → id Type → Type → (id ⊙ id) Type; flip f a b ≔ f b a; inductive Pair (A : Type) (B : Type) { mkPair : id T → id (id A) → B → Pair A B; }; p : {A : Type} → A → Pair A A; p a ≔ mkPair t a a; x' : flip Pair (id _) T2; x' ≔ mkPair x t2 t; end;