(* Require Export FcEtt.ett_inf_cs. *)
Require Export FcEtt.fc_invert.
Module fc_dec (wf : fc_wf_sig) (weak : fc_weak_sig) (subst : fc_subst_sig) (unique: fc_unique_sig).
Module invert := fc_invert wf weak subst.
Module fuel := fc_dec_fuel wf weak subst unique.
Module tc_fun := fc_dec_fun wf weak subst unique.
Module aux := fc_dec_aux wf weak subst unique.
Definition fuel_at n : Type :=
(∀ a, size_tm a <= n ->  fuel_tpg a) *
(∀ phi, size_constraint phi <= n -> fuel_pwf phi) *
(∀ gamma, size_co gamma <= n -> fuel_iso gamma) *
(∀ gamma, size_co gamma <= n -> fuel_deq gamma).
Ltac wfind :=
match goal with
| [ Hind: ∀ z : nat, z < ?x → fuel_at z |- fuel_tpg ?a ] => eapply (Hind (size_tm a))
| [ Hind: ∀ z : nat, z < ?x → fuel_at z |- fuel_deq ?g ] => eapply (Hind (size_co g))
| [ Hind: ∀ z : nat, z < ?x → fuel_at z |- fuel_iso ?g ] => eapply (Hind (size_co g))
| [ Hind: ∀ z : nat, z < ?x → fuel_at z |- fuel_pwf ?g ] => eapply (Hind (size_constraint g))
end.

Lemma fuel_all : ∀ n, fuel_at n.
Definition gaspump : ∀ t : tm, fuel_tpg t.