inductive list (T : Type) : Type := nil {} : list T | cons : T → list T → list T namespace explicit inductive ftree.{l₁ l₂} (A : Type.{l₁}) (B : Type.{l₂}) : Type.{max 1 l₁ l₂} := leafa : A → ftree A B | leafb : B → ftree A B | node : (A → ftree A B) → (B → ftree A B) → ftree A B end explicit namespace implicit inductive ftree (A : Type) (B : Type) : Type := leafa : ftree A B | node : (A → B → ftree A B) → (B → ftree A B) → ftree A B set_option pp.universes true check ftree end implicit namespace implicit2 inductive ftree (A : Type) (B : Type) : Type := leafa : A → ftree A B | leafb : B → ftree A B | node : (list A → ftree A B) → (B → ftree A B) → ftree A B check ftree end implicit2