Section ApplicativeHead.
Variable (X: Const).
Fixpoint head (e: exp X) :=
match e with
| const b => const b
| var x => var x
| lambda s => lambda s
| app e1 e2 => head e1
end.

Lemma head_subst (s: exp X) sigma:
(forall x, ~ isApp (sigma x))  -> sigma • (head s) = head (sigma • s).