@@ -10,7 +10,7 @@ module Data.HeytingAlgebra
1010 , (&&)
1111 , (||)
1212
13- , class HeytingAlgebraRecord
13+ , class HeytingAlgebraRow
1414 , ffRecordImpl
1515 , ttRecordImpl
1616 , impliesRecordImpl
@@ -20,12 +20,12 @@ module Data.HeytingAlgebra
2020 ) where
2121
2222import Data.Internal.Record (unsafeGet , unsafeInsert )
23- import Data.RowList (RLProxy (..))
2423import Data.Symbol (class IsSymbol , SProxy (..), reflectSymbol )
2524import Data.Unit (Unit , unit )
2625import Prim.Row as Row
2726import Prim.RowList as RL
2827import Type.Data.Row (RProxy (..))
28+ import Type.Data.RowList (RLProxy (..))
2929
3030-- | The `HeytingAlgebra` type class represents types that are bounded lattices with
3131-- | an implication operator such that the following laws hold:
@@ -91,81 +91,73 @@ foreign import boolConj :: Boolean -> Boolean -> Boolean
9191foreign import boolDisj :: Boolean -> Boolean -> Boolean
9292foreign import boolNot :: Boolean -> Boolean
9393
94- class HeytingAlgebraRecord rowlist row subrow focus | rowlist -> subrow focus where
94+ class HeytingAlgebraRow rowlist row subrow focus | rowlist -> subrow focus where
9595 ffRecordImpl :: RLProxy rowlist -> RProxy row -> Record subrow
9696 ttRecordImpl :: RLProxy rowlist -> RProxy row -> Record subrow
9797 impliesRecordImpl :: RLProxy rowlist -> Record row -> Record row -> Record subrow
9898 disjRecordImpl :: RLProxy rowlist -> Record row -> Record row -> Record subrow
9999 conjRecordImpl :: RLProxy rowlist -> Record row -> Record row -> Record subrow
100100 notRecordImpl :: RLProxy rowlist -> Record row -> Record subrow
101101
102- instance heytingAlgebraRecordNil :: HeytingAlgebraRecord RL.Nil row () focus where
102+ instance heytingAlgebraRowNil :: HeytingAlgebraRow RL.Nil row () focus where
103103 conjRecordImpl _ _ _ = {}
104104 disjRecordImpl _ _ _ = {}
105105 ffRecordImpl _ _ = {}
106106 impliesRecordImpl _ _ _ = {}
107107 notRecordImpl _ _ = {}
108108 ttRecordImpl _ _ = {}
109109
110- instance heytingAlgebraRecordCons
110+ instance heytingAlgebraRowCons
111111 :: ( IsSymbol key
112112 , Row.Cons key focus subrowTail subrow
113- , HeytingAlgebraRecord rowlistTail row subrowTail subfocus
113+ , HeytingAlgebraRow rowlistTail row subrowTail subfocus
114114 , HeytingAlgebra focus
115115 )
116- => HeytingAlgebraRecord (RL.Cons key focus rowlistTail ) row subrow focus where
117- conjRecordImpl _ ra rb
118- = unsafeInsert key
119- (conj (unsafeGet' key ra) (unsafeGet' key rb))
120- (conjRecordImpl (RLProxy :: RLProxy rowlistTail ) ra rb)
121- where key = reflectSymbol (SProxy :: SProxy key )
122- unsafeGet' = unsafeGet :: String -> Record row -> focus
123-
124- disjRecordImpl _ ra rb
125- = unsafeInsert key
126- (disj (unsafeGet' key ra) (unsafeGet' key rb))
127- (disjRecordImpl (RLProxy :: RLProxy rowlistTail ) ra rb)
128- where key = reflectSymbol (SProxy :: SProxy key )
129- unsafeGet' = unsafeGet :: String -> Record row -> focus
130-
131- impliesRecordImpl _ ra rb
132- = unsafeInsert key
133- (implies (unsafeGet' key ra) (unsafeGet' key rb))
134- (impliesRecordImpl (RLProxy :: RLProxy rowlistTail ) ra rb)
116+ => HeytingAlgebraRow (RL.Cons key focus rowlistTail ) row subrow focus where
117+ conjRecordImpl _ ra rb = insert (conj (get ra) (get rb)) tail
135118 where
136119 key = reflectSymbol (SProxy :: SProxy key )
137- unsafeGet' = unsafeGet :: String -> Record row -> focus
138-
139- ffRecordImpl _ _
140- = unsafeInsert key (ff :: focus )
141- ( ffRecordImpl
142- (RLProxy :: RLProxy rowlistTail )
143- (RProxy :: RProxy row )
144- )
120+ get = unsafeGet key :: Record row -> focus
121+ insert = unsafeInsert key :: focus -> Record subrowTail -> Record subrow
122+ tail = conjRecordImpl (RLProxy :: RLProxy rowlistTail ) ra rb
123+
124+ disjRecordImpl _ ra rb = insert (disj (get ra) (get rb)) tail
125+ where
126+ key = reflectSymbol (SProxy :: SProxy key )
127+ get = unsafeGet key :: Record row -> focus
128+ insert = unsafeInsert key :: focus -> Record subrowTail -> Record subrow
129+ tail = disjRecordImpl (RLProxy :: RLProxy rowlistTail ) ra rb
130+
131+ impliesRecordImpl _ ra rb = insert (implies (get ra) (get rb)) tail
145132 where
146133 key = reflectSymbol (SProxy :: SProxy key )
147- unsafeGet' = unsafeGet :: String -> Record row -> focus
134+ get = unsafeGet key :: Record row -> focus
135+ insert = unsafeInsert key :: focus -> Record subrowTail -> Record subrow
136+ tail = impliesRecordImpl (RLProxy :: RLProxy rowlistTail ) ra rb
137+
138+ ffRecordImpl _ row = insert ff tail
139+ where
140+ key = reflectSymbol (SProxy :: SProxy key )
141+ insert = unsafeInsert key :: focus -> Record subrowTail -> Record subrow
142+ tail = ffRecordImpl (RLProxy :: RLProxy rowlistTail ) row
148143
149144 notRecordImpl _ row
150- = unsafeInsert key (not (unsafeGet' key row))
151- (notRecordImpl (RLProxy :: RLProxy rowlistTail ) row)
145+ = insert (not (get row)) tail
152146 where
153147 key = reflectSymbol (SProxy :: SProxy key )
154- unsafeGet' = unsafeGet :: String -> Record row -> focus
155-
156- ttRecordImpl _ _
157- = unsafeInsert key (tt :: focus )
158- ( ttRecordImpl
159- (RLProxy :: RLProxy rowlistTail )
160- (RProxy :: RProxy row )
161- )
148+ get = unsafeGet key :: Record row -> focus
149+ insert = unsafeInsert key :: focus -> Record subrowTail -> Record subrow
150+ tail = notRecordImpl (RLProxy :: RLProxy rowlistTail ) row
151+
152+ ttRecordImpl _ row = insert tt tail
162153 where
163154 key = reflectSymbol (SProxy :: SProxy key )
164- unsafeGet' = unsafeGet :: String -> Record row -> focus
155+ insert = unsafeInsert key :: focus -> Record subrowTail -> Record subrow
156+ tail = ttRecordImpl (RLProxy :: RLProxy rowlistTail ) row
165157
166158instance heytingAlgebraRecord
167159 :: ( RL.RowToList row list
168- , HeytingAlgebraRecord list row row focus
160+ , HeytingAlgebraRow list row row focus
169161 )
170162 => HeytingAlgebra (Record row ) where
171163 ff = ffRecordImpl (RLProxy :: RLProxy list ) (RProxy :: RProxy row )
0 commit comments