inductive Vector (α : Type u) : Nat → Type u | nil : Vector α 0 | cons : α → Vector α n → Vector α (n+1) infix:67 " :: " => Vector.cons inductive Ty where | int | bool | fn (a r : Ty) inductive HasType : Fin n → Vector Ty n → Ty → Type where | stop : HasType 0 (ty :: ctx) ty | pop : HasType k ctx ty → HasType k.succ (u :: ctx) ty --^ $/lean/plainTermGoal inductive Foo : HasType k ctx ty → Prop --^ $/lean/plainTermGoal def foo : HasType k ctx ty → Prop --^ $/lean/plainTermGoal | _ => True structure Ex where aux : HasType k ctx ty --^ $/lean/plainTermGoal boo : HasType k ctx ty → Prop := fun _ => True --^ $/lean/plainTermGoal variable (x : HasType k ctx ty) --^ $/lean/plainTermGoal #check x