(* * Copyright (c) 2009 Robert Dockins and Aquinas Hobor. * *)
(* Coq development: using indirection theory to model types in l-calculus *)
(* Typing rules *)
Fixpoint gamma_sub (G G':etype) {struct G} : Prop :=
match G, G' with
| nil, nil => True
| x::xs, y::ys => TT |-- y >=> x /\ gamma_sub xs ys
| _, _ => False
end.
Definition prim (f:nat -> value) : expr -> expr :=
Prim (val_to_exp oo f).

Lemma T_Update: forall G e1 tau e2 e3 sigma,
Typ G e1 (ty_ref tau) ->
Typ G e2 tau ->
Typ G e3 sigma ->
Typ G (Update e1 e2 e3) sigma.