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.