The Delta-Framework

Furio Honsell, Luigi Liquori, Claude Stolze, Ivan Scagnetto, Michael Wagner
2018 Foundations of Software Technology and Theoretical Computer Science  
We introduce the ∆-framework, LF ∆ , a dependent type theory based on the Edinburgh Logical Framework LF, extended with the strong proof-functional connectives, i.e. strong intersection, minimal relevant implication and strong union. Strong proof-functional connectives take into account the shape of logical proofs, thus reflecting polymorphic features of proofs in formulae. This is in contrast to classical or intuitionistic connectives where the meaning of a compound formula depends only on the
more » ... depends only on the truth value or the provability of its subformulae. Our framework encompasses a wide range of type disciplines. Moreover, since relevant implication permits to express subtyping, LF ∆ subsumes also Pfenning's refinement types. We discuss the design decisions which have led us to the formulation of LF ∆ , study its metatheory, and provide various examples of applications. Our strong proof-functional type theory can be plugged in existing common proof assistants. ACM Subject Classification Theory of computation → Logic and verification Axiom OK : o → Set. (* Define the essence equality as an equivalence relation *) Axiom Eq : forall (s t : o), OK s → OK t → Prop. Axiom Eqrefl : forall (s : o) (M : OK s), Eq s s M M. Axiom Eqsymm : forall (s t : o) (M : OK s) (N : OK t), Eq s t M N → Eq t s N M. Axiom Eqtrans : forall (s t u : o) (M : OK s) (N : OK t) (O : OK u), Eq s t M N → Eq t u N O → Eq s u M O. (* constructors for arrow (→ I and → E) *) Axiom Abst : forall (s t : o), (( OK s) → (OK t)) → OK (arrow s t). Axiom App : forall (s t : o), OK (arrow s t) → OK s → OK t. (* constructors for intersection *) Axiom Proj_l : forall (s t : o), OK (inter s t) → OK s. Axiom Proj_r : forall (s t : o), OK (inter s t) → OK t. Axiom Pair : forall (s t : o) (M : OK s) (N : OK t), Eq s t M N → OK (inter s t). (* constructors for union *) Axiom Inj_l : forall (s t : o), OK s → OK (union s t). Axiom Inj_r : forall (s t : o), OK t → OK (union s t). Axiom Copair : forall (s t u : o) (X : OK (arrow s u)) (Y : OK (arrow t u)), OK (union s t) → Eq (arrow s u) (arrow t u) X Y → OK u. (* define equality wrt arrow constructors *) Axiom Eqabst : forall (s t s' t' : o) (M : OK s → OK t) (N : OK s' → OK t'), (forall (x : OK s) (y : OK s'), Eq s s' x y → Eq t t' (M x) (N y)) → Eq (arrow s t) (arrow s' t') (Abst s t M) (Abst s' t' N). Axiom Eqapp : forall (s t s' t' : o) (M : OK (arrow s t)) (N : OK s) (M' : OK (arrow s' t')) (N' : OK s'), Eq (arrow s t) (arrow s' t') M M' → Eq s s' N N' → Eq t t' (App s t M N) (App s' t' M' N'). (* define equality wrt intersection constructors *) Axiom Eqpair : forall (s t : o) (M : OK s) (N : OK t) (pf : Eq s t M N), Eq (inter s t) s (Pair s t M N pf) M. Axiom Eqproj_l : forall (s t : o) (M : OK (inter s t)), Eq (inter s t) s M (Proj_l s t M). Axiom Eqproj_r : forall (s t : o) (M : OK (inter s t)), Eq (inter s t) t M (Proj_r s t M). (* define equality wrt union *) Axiom Eqinj_l : forall (s t : o) (M : OK s), Eq (union s t) s (Inj_l s t M) M. Axiom Eqinj_r : forall (s t : o) (M : OK t), Eq (union s t) t (Inj_r s t M) M. Axiom . A calculus with polymorphic and polyvariant flow types.
doi:10.4230/lipics.fsttcs.2018.37 dblp:conf/fsttcs/HonsellLSS18 fatcat:dyuc4i6z2bczbk56xn2gtqsvbe