-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSeq.hs
41 lines (35 loc) · 1.03 KB
/
Seq.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE KindSignatures #-}
-- |
-- Module : Seq
-- Description : Sequent calculus by Arrow
-- Copyright : (c) Hexirp, 2017
-- License : BSD3
--
-- Arrowは計算を表現します。それはシークエント計算と類似しています。
-- 一例として、cut規則は合成に対応し、init規則は恒等射に対応します。
-- さらにこの関係を広げれば、命題論理や、線形論理などを表せると予想
-- しました。
module Seq where
import Prelude ()
-- | 線形論理の性質を持つ。
class Linear seq where
-- infixl 5 :@
data (:@) :: * -> * -> *
-- infixl 9 :*
data (:*) :: * -> * -> *
-- infixl 8 :&
data (:&) :: * -> * -> *
-- infixl 7 :+
data (:+) :: * -> * -> *
-- infixl 6 :|
data (:|) :: * -> * -> *
data Wow :: * -> *
data Hmm :: * -> *
data One :: *
data Top :: *
data Zer :: *
data Bot :: *
init :: seq a a
cut :: seq gg (dd :@ x) -> seq (x :@ ss) pp -> seq (gg :@ ss) (dd :@ pp)