Fold.hs revision e6d40133bc9f858308654afb1262b8b483ec5922
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder{- |
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian MaederModule : $Header$
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerDescription : folding functions for CASL terms and formulas
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian MaederCopyright : (c) Christian Maeder, Uni Bremen 2005
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu ProdescuMaintainer : maeder@tzi.de
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian MaederStability : provisional
3f69b6948966979163bdfe8331c38833d5d90ecdChristian MaederPortability : portable
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maederfolding functions for CASL terms and formulas
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder-}
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maedermodule CASL.Fold where
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maederimport Common.Id
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroederimport CASL.AS_Basic_CASL
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maeder
9c8a25f5fee3a72a997b1c00167776f11ac1e5eaChristian Maederdata Record f a b = Record
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maeder { foldQuantification :: FORMULA f -> QUANTIFIER -> [VAR_DECL] ->
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder a -> Range -> a
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maeder , foldConjunction :: FORMULA f -> [a] -> Range -> a
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder , foldDisjunction :: FORMULA f -> [a] -> Range -> a
e706cd149fdb1264de1146898db31c6892de56b9Christian Maeder , foldImplication :: FORMULA f -> a -> a -> Bool -> Range -> a
e706cd149fdb1264de1146898db31c6892de56b9Christian Maeder , foldEquivalence :: FORMULA f -> a -> a -> Range -> a
8d27f8421c558cae0024cf6031b2adbedee61350Christian Maeder , foldNegation :: FORMULA f -> a -> Range -> a
9ef50e34b8f844459906962859b4b3b9de3aaa31Christian Maeder , foldTrue_atom :: FORMULA f -> Range -> a
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian Maeder , foldFalse_atom :: FORMULA f -> Range -> a
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian Maeder , foldPredication :: FORMULA f -> PRED_SYMB -> [b] -> Range -> a
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maeder , foldDefinedness :: FORMULA f -> b -> Range -> a
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldExistl_equation :: FORMULA f -> b -> b -> Range -> a
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldStrong_equation :: FORMULA f -> b -> b -> Range -> a
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , foldMembership :: FORMULA f -> b -> SORT -> Range -> a
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , foldMixfix_formula :: FORMULA f -> b -> a
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldSort_gen_ax :: FORMULA f -> [Constraint] -> Bool -> a
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , foldExtFORMULA :: FORMULA f -> f -> a
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldSimpleId :: TERM f -> VAR -> b
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldQual_var :: TERM f -> VAR -> SORT -> Range -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldApplication :: TERM f -> OP_SYMB -> [b] -> Range -> b
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , foldSorted_term :: TERM f -> b -> SORT -> Range -> b
64b0f1c88baec9569d79261a23afad1fbcbe2599Christian Maeder , foldCast :: TERM f -> b -> SORT -> Range -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldConditional :: TERM f -> b -> a -> b -> Range -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_qual_pred :: TERM f -> PRED_SYMB -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_term :: TERM f -> [b] -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_token :: TERM f -> Token -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_sorted_term :: TERM f -> SORT -> Range -> b
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , foldMixfix_cast :: TERM f -> SORT -> Range -> b
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldMixfix_parenthesized :: TERM f -> [b] -> Range -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_bracketed :: TERM f -> [b] -> Range -> b
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_braced :: TERM f -> [b] -> Range -> b
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder }
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian Maeder
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian MaedermapRecord :: (f -> g) -> Record f (FORMULA g) (TERM g)
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian MaedermapRecord mf = Record
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder { foldQuantification = \ _ -> Quantification
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldConjunction = \ _ -> Conjunction
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldDisjunction = \ _ -> Disjunction
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldImplication = \ _ -> Implication
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldEquivalence = \ _ -> Equivalence
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldNegation = \ _ -> Negation
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldTrue_atom = \ _ -> True_atom
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldFalse_atom = \ _ -> False_atom
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldPredication = \ _ -> Predication
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldDefinedness = \ _ -> Definedness
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldExistl_equation = \ _ -> Existl_equation
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldStrong_equation = \ _ -> Strong_equation
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldMembership = \ _ -> Membership
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldMixfix_formula = \ _ -> Mixfix_formula
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldSort_gen_ax = \ _ -> Sort_gen_ax
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldExtFORMULA = \ _ f -> ExtFORMULA $ mf f
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldSimpleId = \ _ -> Simple_id
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder , foldQual_var = \ _ -> Qual_var
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldApplication = \ _ -> Application
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldSorted_term = \ _ -> Sorted_term
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldCast = \ _ -> Cast
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldConditional = \ _ -> Conditional
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_qual_pred = \ _ -> Mixfix_qual_pred
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_term = \ _ -> Mixfix_term
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_token = \ _ -> Mixfix_token
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_sorted_term = \ _ -> Mixfix_sorted_term
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_cast = \ _ -> Mixfix_cast
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_parenthesized = \ _ -> Mixfix_parenthesized
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_bracketed = \ _ -> Mixfix_bracketed
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldMixfix_braced = \ _ -> Mixfix_braced
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder }
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian Maeder
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian MaedermapOnlyTermRecord :: Record f (FORMULA f) (TERM f)
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian MaedermapOnlyTermRecord =
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder (mapRecord (\ _ -> error "Will be overwitten"))
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder { foldQuantification = \ _ _ _ _ _ ->
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder error "No implementation for Quantification"
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldConjunction = \ _ _ _ ->
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian Maeder error "No implementation for Conjunction"
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldDisjunction = \ _ _ _ ->
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder error "No implementation for Disjunction"
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldImplication = \ _ _ _ _ ->
4c207cfde41edb6509b80c39d1e62098c76b3ce8Christian Maeder error "No implementation for Implication"
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldEquivalence = \ _ _ _ _ ->
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder error "No implementation for Equivalence"
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldNegation = \ _ _ _ ->
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder error "No implementation for Negation"
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldTrue_atom = \ _ _ ->
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder error "No implementation for True_atom"
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldFalse_atom = \ _ _ ->
6d2ddb06d184d483eb7a71c0b889f54ed23095d7Christian Maeder error "No implementation for False_atom"
6d2ddb06d184d483eb7a71c0b889f54ed23095d7Christian Maeder , foldSort_gen_ax = \ _ _ _ ->
6d2ddb06d184d483eb7a71c0b889f54ed23095d7Christian Maeder error "No implementation for Sort_gen_ax"
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder }
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian MaedernoMixfixRecord :: (f -> Bool) -> Record f Bool Bool
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian MaedernoMixfixRecord mf = (constRecord mf and True)
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder { foldMixfix_formula = \ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_qual_pred = \ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_term = \ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_token = \ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_sorted_term = \ _ _ _ -> False
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_cast = \ _ _ _ -> False
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldMixfix_parenthesized = \ _ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_bracketed = \ _ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_braced = \ _ _ _ -> False
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder }
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian MaederconstRecord :: (f -> a) -> ([a] -> a) -> a -> Record f a a
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian MaederconstRecord mf join c = Record
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder { foldQuantification = \ _ _ _ r _ -> r
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldConjunction = \ _ l _ -> join l
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldDisjunction = \ _ l _ -> join l
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldImplication = \ _ l r _ _ -> join [l, r]
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldEquivalence = \ _ l r _ -> join [l, r]
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldNegation = \ _ r _ -> r
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldTrue_atom = \ _ _ -> c
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldFalse_atom = \ _ _ -> c
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldPredication = \ _ _ l _ -> join l
412e440f8acdbae3df0e2fd12ff078f3f23a2799Christian Maeder , foldDefinedness = \ _ r _ -> r
ff388e0ef7318a4126edf29cc8c977296de2cc48Christian Maeder , foldExistl_equation = \ _ l r _ -> join [l, r]
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian Maeder , foldStrong_equation = \ _ l r _ -> join [l, r]
ccbfbec271a4ff6a8ae995b47b02cce21988f3caChristian Maeder , foldMembership = \ _ r _ _ -> r
c667c643fac66101daf13f48859e6f2441064122Christian Maeder , foldMixfix_formula = \ _ r -> r
c667c643fac66101daf13f48859e6f2441064122Christian Maeder , foldSort_gen_ax = \ _ _ _ -> c
c667c643fac66101daf13f48859e6f2441064122Christian Maeder , foldExtFORMULA = \ _ f -> mf f
c667c643fac66101daf13f48859e6f2441064122Christian Maeder , foldSimpleId = \ _ _ -> c
c667c643fac66101daf13f48859e6f2441064122Christian Maeder , foldQual_var = \ _ _ _ _ -> c
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian Maeder , foldApplication = \ _ _ l _ -> join l
c667c643fac66101daf13f48859e6f2441064122Christian Maeder , foldSorted_term = \ _ r _ _ -> r
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldCast = \ _ r _ _ -> r
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldConditional = \ _ l f r _ -> join [l, f, r]
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_qual_pred = \ _ _ -> c
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_term = \ _ l -> join l
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_token = \ _ _ -> c
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_sorted_term = \ _ _ _ -> c
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian Maeder , foldMixfix_cast = \ _ _ _ -> c
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian Maeder , foldMixfix_parenthesized = \ _ l _ -> join l
40540cb0f781e4136c55c2e2a5563e8973fe7b13Christian Maeder , foldMixfix_bracketed = \ _ l _ -> join l
b2e92fd7a332d07a52e0284ea7a40618e0ff5656Christian Maeder , foldMixfix_braced = \ _ l _ -> join l
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder }
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian MaederfoldFormula :: Record f a b -> FORMULA f -> a
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian MaederfoldFormula r f = case f of
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder Quantification q vs e ps -> foldQuantification r f q vs (foldFormula r e) ps
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder Conjunction fs ps -> foldConjunction r f (map (foldFormula r) fs) ps
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder Disjunction fs ps -> foldDisjunction r f (map (foldFormula r) fs) ps
e706cd149fdb1264de1146898db31c6892de56b9Christian Maeder Implication f1 f2 b ps -> foldImplication r f (foldFormula r f1)
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian Maeder (foldFormula r f2) b ps
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maeder Equivalence f1 f2 ps -> foldEquivalence r f (foldFormula r f1)
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder (foldFormula r f2) ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder Negation e ps -> foldNegation r f (foldFormula r e) ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder True_atom ps -> foldTrue_atom r f ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder False_atom ps -> foldFalse_atom r f ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder Predication p ts ps -> foldPredication r f p (map (foldTerm r) ts) ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder Definedness t ps -> foldDefinedness r f (foldTerm r t) ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder Existl_equation t1 t2 ps -> foldExistl_equation r f (foldTerm r t1)
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder (foldTerm r t2) ps
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder Strong_equation t1 t2 ps -> foldStrong_equation r f (foldTerm r t1)
e6c126e103556d963bb152dccd9f7fc0bc6689d2Christian Maeder (foldTerm r t2) ps
b7595e27357693a02030ac0701eb2f5b5ccc7889Christian Maeder Membership t s ps -> foldMembership r f (foldTerm r t) s ps
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder Mixfix_formula t -> foldMixfix_formula r f (foldTerm r t)
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder Unparsed_formula s _ -> error $ "Fold.foldFormula.Unparsed" ++ s
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder Sort_gen_ax cs b -> foldSort_gen_ax r f cs b
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder ExtFORMULA e -> foldExtFORMULA r f e
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian MaederfoldTerm :: Record f a b -> TERM f -> b
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian MaederfoldTerm r = foldOnlyTerm (foldFormula r) r
91beb75ac62aaf1a44d9695c9a1bc64a404c5b4eChristian Maeder
e706cd149fdb1264de1146898db31c6892de56b9Christian MaederfoldOnlyTerm :: (FORMULA f -> a) -> Record f a b -> TERM f -> b
287210656cc6dc40ec8d8cf4b25c941800b679cbChristian MaederfoldOnlyTerm ff r t = case t of
730e66678ee6e8a83a50b516653f4f7acc116129Christian Maeder Simple_id i -> foldSimpleId r t i
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Qual_var v s ps -> foldQual_var r t v s ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Application o ts ps -> foldApplication r t o (map (foldOnlyTerm ff r) ts) ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Sorted_term st s ps -> foldSorted_term r t (foldOnlyTerm ff r st) s ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Cast ct s ps -> foldCast r t (foldOnlyTerm ff r ct) s ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Conditional t1 f t2 ps -> foldConditional r t (foldOnlyTerm ff r t1)
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder (ff f) (foldOnlyTerm ff r t2) ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Unparsed_term s _ -> error $ "Fold.Unparsed_term" ++ s
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_qual_pred p -> foldMixfix_qual_pred r t p
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_term ts -> foldMixfix_term r t (map (foldOnlyTerm ff r) ts)
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_token s -> foldMixfix_token r t s
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_sorted_term s ps -> foldMixfix_sorted_term r t s ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_cast s ps -> foldMixfix_cast r t s ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_parenthesized ts ps -> foldMixfix_parenthesized r t
e706cd149fdb1264de1146898db31c6892de56b9Christian Maeder (map (foldOnlyTerm ff r) ts) ps
e706cd149fdb1264de1146898db31c6892de56b9Christian Maeder Mixfix_bracketed ts ps -> foldMixfix_bracketed r t
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder (map (foldOnlyTerm ff r) ts) ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder Mixfix_braced ts ps -> foldMixfix_braced r t
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder (map (foldOnlyTerm ff r) ts) ps
ce3e8067c8e5c5ffe7e76d75ead46e2b67adcafcChristian Maeder