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 atom_head_lifting (s: exp X) (sigma: fin -> exp X):
(forall x, isAtom (head (sigma x))) -> isAtom (head s) -> isAtom (head (sigma • s)).