@@ -271,7 +271,7 @@ occurs h x = case x of
271
271
-- where @gen@ does not occur in @term@.
272
272
findSimplifiableEqs
273
273
:: (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
275
275
-> Maybe (Head ty sym en fk att gen sk , Term var ty sym en fk att gen sk )
276
276
findSimplifiableEqs = procEqs . Set. toList
277
277
where
@@ -317,19 +317,19 @@ replaceRepeatedly ((s,t):r) e = replaceRepeatedly r $ replace' s t e
317
317
-- | Takes in a theory and a translation function and repeatedly (to fixpoint) attempts to simplify (extend) it.
318
318
simplifyTheory
319
319
:: (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
321
321
-> [(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]
326
326
327
327
-- | Does a one step simplifcation of a theory, looking for equations @gen/sk = term@, yielding also a
328
328
-- translation function from the old theory to the new, encoded as a list of (symbol, term) pairs.
329
329
simplifyTheoryStep
330
330
:: (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 ))
333
333
simplifyTheoryStep eqs = case findSimplifiableEqs eqs of
334
334
Nothing -> Nothing
335
335
Just (toRemove, replacer) -> let
@@ -368,6 +368,8 @@ instance Up y (x + y) where
368
368
--------------------------------------------------------------------------------------------------------------------
369
369
-- Theories
370
370
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
+
371
373
-- TODO wrap Map class to throw an error (or do something less ad hoc) if a key is ever put twice
372
374
type Ctx k v = Map k v
373
375
0 commit comments