Require Export FcEtt.ett_ott.
Require Export FcEtt.utils.
(**************** Ext_Wf ****************)
Module Type ext_wf_sig.

(* Specifications: *)
Axiom ctx_wff_mutual :
(forall G0 a A, Typing G0 a A -> Ctx G0) /\
(forall G0 phi,   PropWff G0 phi -> Ctx G0) /\
(forall G0 D p1 p2, Iso G0 D p1 p2 -> Ctx G0) /\
(forall G0 D A B T,   DefEq G0 D A B T -> Ctx G0) /\
(forall G0, Ctx G0 -> True).
Axiom lc_mutual :
(forall G0 a A, Typing G0 a A -> lc_tm a /\ lc_tm A) /\
(forall G0 phi,   PropWff G0 phi -> lc_constraint phi) /\
(forall G0 D p1 p2, Iso G0 D p1 p2 -> lc_constraint p1 /\ lc_constraint p2) /\
(forall G0 D A B T,   DefEq G0 D A B T -> lc_tm A /\ lc_tm B /\ lc_tm T) /\
(forall G0, Ctx G0 -> forall x s , binds x s G0 -> lc_sort s).
Axiom Typing_lc  : forall G0 a A, Typing G0 a A -> lc_tm a /\ lc_tm A.
Axiom PropWff_lc : forall G0 phi,   PropWff G0 phi -> lc_constraint phi.
Axiom Iso_lc : forall G0 D p1 p2, Iso G0 D p1 p2 -> lc_constraint p1 /\ lc_constraint p2.
Axiom DefEq_lc : forall G0 D A B T,   DefEq G0 D A B T -> lc_tm A /\ lc_tm B /\ lc_tm T.
Axiom Typing_lc1 : forall G0 a A, Typing G0 a A -> lc_tm a.
Axiom Typing_lc2 : forall G0 a A, Typing G0 a A -> lc_tm A.
Axiom Iso_lc1 : forall G0 D p1 p2, Iso G0 D p1 p2 -> lc_constraint p1.
Axiom Iso_lc2 : forall G0 D p1 p2, Iso G0 D p1 p2 -> lc_constraint p2.
Axiom DefEq_lc1 : forall G0 D A B T,   DefEq G0 D A B T -> lc_tm A.
Axiom DefEq_lc2 : forall G0 D A B T,   DefEq G0 D A B T -> lc_tm B.
Axiom DefEq_lc3 : forall G0 D A B T,   DefEq G0 D A B T -> lc_tm T.
Axiom Ctx_lc : forall G0, Ctx G0 -> forall x s , binds x s G0 -> lc_sort s.
Axiom Ctx_uniq : forall G, Ctx G -> uniq G.
Axiom Toplevel_lc : forall c s, binds c s toplevel -> lc_sig_sort s.
Axiom Path_lc : forall T a, Path T a -> lc_tm a.
Axiom DataTy_lc : forall A, DataTy A a_Star -> lc_tm A.
Axiom Value_lc : forall A, Value A -> lc_tm A.
Axiom CoercedValue_lc : forall A, CoercedValue A -> lc_tm A.
End ext_wf_sig.