Section Sem.
Variable K : Kripke.
Fixpoint sem (rho: substitution (domain K))(t:term){struct t} : domain K :=
match t with
| Var x => match assoc _ x rho with
| Some a => a
| None => vars K x
end
| App f t' => funs K f (sem rho t')
end.
End Sem.
Notation "w <= w'" := (wle _ w w').
Set Implicit Arguments.
Reserved Notation "w ||- A" (at level 70).
Definition context := list formula.
Variable fresh : variable -> context -> Prop.
Variable fresh_out : context -> variable.

Axiom fresh_out_spec : forall Gamma, fresh (fresh_out Gamma) Gamma.