Skip to content

Commit 0bce9fd

Browse files
committed
Term.hs: Introduce Theory type alias. #148
1 parent 6a92d8e commit 0bce9fd

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/Language/CQL/Term.hs

+10-8
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ occurs h x = case x of
271271
-- where @gen@ does not occur in @term@.
272272
findSimplifiableEqs
273273
:: (Eq ty, Eq sym, Eq en, Eq fk, Eq att, Eq gen, Eq sk)
274-
=> Set (Ctx var (ty+en), EQ var ty sym en fk att gen sk)
274+
=> Theory var ty sym en fk att gen sk
275275
-> Maybe (Head ty sym en fk att gen sk, Term var ty sym en fk att gen sk)
276276
findSimplifiableEqs = procEqs . Set.toList
277277
where
@@ -317,19 +317,19 @@ replaceRepeatedly ((s,t):r) e = replaceRepeatedly r $ replace' s t e
317317
-- | Takes in a theory and a translation function and repeatedly (to fixpoint) attempts to simplify (extend) it.
318318
simplifyTheory
319319
:: (MultiTyMap '[Ord] '[var, ty, sym, en, fk, att, gen, sk])
320-
=> Set (Ctx var (ty + en), EQ var ty sym en fk att gen sk)
320+
=> Theory var ty sym en fk att gen sk
321321
-> [(Head ty sym en fk att gen sk, Term var ty sym en fk att gen sk)]
322-
-> (Set (Ctx var (ty+en), EQ var ty sym en fk att gen sk), [(Head ty sym en fk att gen sk, Term var ty sym en fk att gen sk)])
323-
simplifyTheory eqs subst0 = case simplifyTheoryStep eqs of
324-
Nothing -> (eqs, subst0)
325-
Just (eqs1, subst1) -> simplifyTheory eqs1 $ subst0 ++ [subst1]
322+
-> (Theory var ty sym en fk att gen sk, [(Head ty sym en fk att gen sk, Term var ty sym en fk att gen sk)])
323+
simplifyTheory th subst0 = case simplifyTheoryStep th of
324+
Nothing -> (th, subst0)
325+
Just (th', subst1) -> simplifyTheory th' $ subst0 ++ [subst1]
326326

327327
-- | Does a one step simplifcation of a theory, looking for equations @gen/sk = term@, yielding also a
328328
-- translation function from the old theory to the new, encoded as a list of (symbol, term) pairs.
329329
simplifyTheoryStep
330330
:: (MultiTyMap '[Ord] '[var, ty, sym, en, fk, att, gen, sk])
331-
=> Set (Ctx var (ty+en), EQ var ty sym en fk att gen sk)
332-
-> Maybe (Set (Ctx var (ty+en), EQ var ty sym en fk att gen sk), (Head ty sym en fk att gen sk, Term var ty sym en fk att gen sk))
331+
=> Theory var ty sym en fk att gen sk
332+
-> Maybe (Theory var ty sym en fk att gen sk, (Head ty sym en fk att gen sk, Term var ty sym en fk att gen sk))
333333
simplifyTheoryStep eqs = case findSimplifiableEqs eqs of
334334
Nothing -> Nothing
335335
Just (toRemove, replacer) -> let
@@ -368,6 +368,8 @@ instance Up y (x + y) where
368368
--------------------------------------------------------------------------------------------------------------------
369369
-- Theories
370370

371+
type Theory var ty sym en fk att gen sk = Set (Ctx var (ty+en), EQ var ty sym en fk att gen sk)
372+
371373
-- TODO wrap Map class to throw an error (or do something less ad hoc) if a key is ever put twice
372374
type Ctx k v = Map k v
373375

0 commit comments

Comments
 (0)