packages feed

dedukti-1.0.0: t/stt1.eu

; Simple Type Theory as a theory in predicate logic.
;
; Use reverse polish notation for names, eg:
;   * i -> i becomes iia,
;   * i -> i -> i becomes iiiaa
;   * (i -> i) -> i becomes iiaia

o : Type.
eps : o -> Type.

i : Type.
iia : Type.
iiiaa : Type.
iiiiaaa : Type.
iiaia : Type.
iiiaaiiaiiaaa : Type.
iiaiiaa : Type.

ooa : Type.
oooaa : Type.
ioaoa : Type.
iiaoaoa : Type.
iiiaaoaoa : Type.

O : i.
S : iia.

ap_iia : iia -> i -> i.
ap_iiiaa : iiiaa -> i -> iia.
ap_iiiaaiiaiiaaa : iiiaaiiaiiaaa -> iiiaa -> iiaiiaa.
ap_iiaiiaa : iiaiiaa -> iia -> iia.

ap_ooa : ooa -> o -> o.
ap_oooaa : oooaa -> o -> ooa.

one : i.
[] one --> ap_iia S O.

imp : oooaa.
forall_i : ioaoa.
forall_iia : iiaoaoa.
forall_iiiaa : iiiaaoaoa.

; S and K combinators.
S_iiiaaiiaiiaaa : iiiaaiiaiiaaa.
K_iiiaa : iiiaa.

[ x : iiiaa
, y : iia
, z : i ]
ap_iia (ap_iiaiiaa (ap_iiiaaiiaiiaaa S_iiiaaiiaiiaaa x) y) z --> ap_iia (ap_iiiaa x z) (ap_iia y z).
[ x : i
, y : i ]
ap_iia (ap_iiiaa K_iiiaa x) y --> x.
[ x : o
, y : o ]
eps (ap_ooa (ap_oooaa imp x) y) --> eps x -> eps y.