[ formulas
| nd
| and
| lv
| nd -> and
| and -> lv
| lv -> and
| and -> nd
| reductions
|| minimal linear logic
|| LLF
]
Natural Deductions to Annotated Natural Deductions
%%% Annotating Minimal Linear Natural Deductions.
%%% Author: Frank Pfenning
%%%
%%% Implementation is also linear, over linear index derivations.
nd2i : nd A -> intro A -> type.
nd2e : nd A -> elim A -> type.
%% Multiplicative Connectives
nd2i_impi : nd2i (impi D1) (impi' I1)
o- ({h:nd A} {u:elim A}
nd2e h u & nd2i h (e2i u)
-o nd2i (D1 h) (I1 u)).
nd2e_impi : nd2e (impi D1) (i2e I)
o- nd2i (impi D1) I.
nd2i_impe : nd2i (impe D1 D2) (e2i E)
o- nd2e (impe D1 D2) E.
nd2e_impe : nd2e (impe D1 D2) (impe' I1 E2)
o- nd2i D1 I1
o- nd2e D2 E2.
nd2i_timesi : nd2i (timesi D1 D2) (timesi' I1 I2)
o- nd2i D1 I1
o- nd2i D2 I2.
nd2e_timesi : nd2e (timesi D1 D2) (i2e I)
o- nd2i (timesi D1 D2) I.
nd2i_timese : nd2i (timese D1 D2) (timese' I1 E2)
o- ({h1:nd A} {u1:elim A}
{h2:nd B} {u2:elim B}
nd2e h1 u1
& nd2i h1 (e2i u1)
-o nd2e h2 u2
& nd2i h2 (e2i u2)
-o nd2i (D1 h1 h2) (I1 u1 u2))
o- nd2e D2 E2.
nd2e_timese : nd2e (timese D1 D2) (i2e I)
o- nd2i (timese D1 D2) I.
nd2i_onei : nd2i (onei) (onei').
nd2e_onei : nd2e (onei) (i2e I)
o- nd2i (onei) I.
nd2i_onee : nd2i (onee D1 D2) (onee' I1 E2)
o- nd2i D1 I1
o- nd2e D2 E2.
nd2e_onee : nd2e (onee D1 D2) (i2e I)
o- nd2i (onee D1 D2) I.
%% Additive Connectives
nd2i_withi : nd2i (withi (D1 , D2)) (withi' (I1 , I2))
o- nd2i D1 I1
& nd2i D2 I2.
nd2e_withi : nd2e (withi (D1 , D2)) (i2e I)
o- nd2i (withi (D1 , D2)) I.
nd2i_withe1 : nd2i (withe1 D1) (e2i E)
o- nd2e (withe1 D1) E.
nd2i_withe2 : nd2i (withe2 D2) (e2i E)
o- nd2e (withe2 D2) E.
nd2e_withe1 : nd2e (withe1 D1) (withe1' E1)
o- nd2e D1 E1.
nd2e_withe2 : nd2e (withe2 D2) (withe2' E2)
o- nd2e D2 E2.
nd2i_topi : nd2i (topi ()) (topi' ())
o- <T>.
nd2e_topi : nd2e (topi ()) (i2e I)
o- nd2i (topi ()) I.
% no tope
nd2i_plusi1 : nd2i (plusi1 D1) (plusi1' I1)
o- nd2i D1 I1.
nd2i_plusi2 : nd2i (plusi2 D2) (plusi2' I2)
o- nd2i D2 I2.
nd2e_plusi1 : nd2e (plusi1 D1) (i2e I)
o- nd2i (plusi1 D1) I.
nd2e_plusi2 : nd2e (plusi2 D2) (i2e I)
o- nd2i (plusi2 D2) I.
nd2i_pluse : nd2i (pluse (D1 , D2) D3) (pluse' (I1 , I2) E3)
o- (({h1:nd A} {u1:elim A}
nd2e h1 u1 & nd2i h1 (e2i u1)
-o nd2i (D1 h1) (I1 u1))
& ({h2:nd B} {u2:elim B}
nd2e h2 u2 & nd2i h2 (e2i u2)
-o nd2i (D2 h2) (I2 u2)))
o- nd2e D3 E3.
nd2e_pluse : nd2e (pluse (D1 , D2) D3) (i2e I)
o- nd2i (pluse (D1 , D2) D3) I.
% no zeroi
nd2i_zeroe : nd2i (zeroe () D1) (zeroe' () E1)
o- nd2e D1 E1
o- <T>.
nd2e_zeroe : nd2e (zeroe () D1) (i2e I1)
o- nd2i (zeroe () D1) I1.
%% Quantifiers
nd2i_foralli : nd2i (foralli D1) (foralli' I1)
o- ({a:i} nd2i (D1 a) (I1 a)).
nd2e_foralli : nd2e (foralli D1) (i2e I)
o- nd2i (foralli D1) I.
nd2i_foralle : nd2i (foralle T D1) (e2i E)
o- nd2e (foralle T D1) E.
nd2e_foralle : nd2e (foralle T D1) (foralle' T E1)
o- nd2e D1 E1.
nd2i_existsi : nd2i (existsi T D1) (existsi' T I1)
o- nd2i D1 I1.
nd2e_existsi : nd2e (existsi T D1) (i2e I)
o- nd2i (existsi T D1) I.
nd2i_existse : nd2i (existse D1 D2) (existse' I1 E2)
o- ({a:i}
{h1:nd (A a)} {u1:elim (A a)}
nd2e h1 u1 & nd2i h1 (e2i u1)
-o nd2i (D1 a h1) (I1 a u1))
o- nd2e D2 E2.
nd2e_existse : nd2e (existse D1 D2) (i2e I)
o- nd2i (existse D1 D2) I.
%% Exponentials
nd2i_!i : nd2i (!i D1) (!i' I1)
<- nd2i D1 I1.
nd2e_!i : nd2e (!i D1) (i2e I)
o- nd2i (!i D1) I.
nd2i_!e : nd2i (!e D1 D2) (!e' I1 E2)
o- ({h!:nd A} {u!:elim A}
nd2e h! u! & nd2i h! (e2i u!)
-> nd2i (D1 h!) (I1 u!))
o- nd2e D2 E2.
nd2e_!e : nd2e (!e D1 D2) (i2e I)
o- nd2i (!e D1 D2) I.
[ formulas
| nd
| and
| lv
| nd -> and
| and -> lv
| lv -> and
| and -> nd
| reductions
|| minimal linear logic
|| LLF
]
Frank Pfenning