Changeset 12753

Show
Ignore:
Timestamp:
29.10.2009 17:17:25 (3 weeks ago)
Author:
maeder
Message:

removed inline axioms and created axioms directly

Location:
trunk
Files:
1 modified
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Comorphisms/CASL2TopSort.hs

    r12709 r12753  
    211211        (genSenName "o" opName $ length sl) (genOpEquation kind opName) sl spl 
    212212 
     213mkQualPred :: PRED_NAME -> SORT -> PRED_SYMB 
     214mkQualPred symS ts = Qual_pred_name symS (Pred_type [ts] nullRange) nullRange 
     215 
    213216symmetryAxioms :: SubSortMap -> Rel.Rel SORT -> [Named (FORMULA ())] 
    214217symmetryAxioms ssMap sortRels = 
     
    216219        mR = Rel.mostRight sortRels 
    217220        symTopSorts = not . Set.null . Set.intersection mR 
    218         xVar = mkSimpleId "x" 
    219         updateLabel ts symS [sen] = 
    220           reName (\ s -> show ts ++ s ++ show symS) sen 
    221         updateLabel _ _ _ = error "CASL2TopSort.symmetryAxioms" 
    222         toAxioms symSet = 
    223             [updateLabel ts symS (inlineAxioms CASL 
    224                     "sort ts pred symS:ts\n\ 
    225                     \forall xVar : ts\n\ 
    226                     \. symS(xVar) %(_symmetric_with_)%") 
    227                         | s <- Set.toList (Set.difference symSet mR), 
    228                           let ts = lkupTop ssMap s, 
    229                           let symS = fromJust (lkupPredName ssMap s)] 
    230  
     221        toAxioms symSet = map (\ s -> 
     222            let ts = lkupTop ssMap s 
     223                Just symS = lkupPredName ssMap s 
     224                psy = mkQualPred symS ts 
     225                vd = mkVarDeclStr "x" ts 
     226                vt = toQualVar vd 
     227            in makeNamed (show ts ++ "_symmetric_with_" ++ show symS) 
     228                   $ mkForall [vd] (Predication psy [vt] nullRange) nullRange 
     229            ) $ Set.toList (Set.difference symSet mR) 
    231230    in concatMap toAxioms (filter symTopSorts symSets) 
    232231 
     
    237236    -- generate argument restrictions for operations 
    238237    axs <- Map.foldWithKey (procOpMapping subSortMap) (return []) oMap 
    239     return $ reverse hi_axs ++ reverse p_axs ++ reverse axs 
     238    return $ hi_axs ++ reverse p_axs ++ reverse axs 
    240239    where p_axs = 
    241240          -- generate argument restrictions for predicates 
     
    251250          -- generate subclass_of axioms derived from subsorts 
    252251          -- and non-emptyness axioms 
    253               Map.fold (\ prdInf al -> 
     252              concatMap (\ prdInf -> 
    254253               let ts = topSortPI prdInf 
    255254                   subS = predicatePI prdInf 
     
    261260                                  predicatePI $ Map.lookup s subSortMap) 
    262261                         $ Set.toList set 
    263                    x = mkSimpleId "x" 
    264                 in al ++ zipWith (\ sen supS -> 
    265                                       reName (\ s -> show subS ++ s 
    266                                                       ++ show supS) sen) 
    267                          (concat [inlineAxioms CASL 
    268                                   "sort ts\n\ 
    269                                   \pred subS,supS: ts\n\ 
    270                                   \ forall x : ts . subS(x) =>\n\ 
    271                                   \ supS(x) %(_subclassOf_)%"|supS<-supPreds] 
    272                          ) supPreds ++ 
    273                          map (reName (show subS ++)) 
    274                                  (concat [inlineAxioms CASL 
    275                                   "sort ts\n\ 
    276                                   \pred subS: ts \n\ 
    277                                   \. exists x:ts . \n\ 
    278                                   \ subS(x) %(_non_empty)%"]) 
    279              ) [] subSortMap 
     262                   x = mkVarDeclStr "x" ts 
     263                   mkPredf sS = Predication (mkQualPred sS ts) [toQualVar x] 
     264                                nullRange 
     265                in makeNamed (show subS ++ "_non_empty") 
     266                   (Quantification Existential [x] (mkPredf subS) 
     267                     nullRange) 
     268                   : map (\ supS -> 
     269                       makeNamed (show subS ++ "_subclassOf_" ++ show supS) 
     270                       $ mkForall [x] 
     271                          (mkImpl (mkPredf subS) $ mkPredf supS) 
     272                          nullRange) supPreds 
     273             ) $ Map.elems subSortMap 
    280274 
    281275mkProfMapPred :: SubSortMap -> Set.Set PredType 
  • trunk/Makefile

    r12745 r12753  
    363363 
    364364# files to be processed by utils/InlineAxioms 
    365 inline_axiom_files = \ 
    366     Comorphisms/Modal2CASL.hs Comorphisms/CASL2TopSort.hs \ 
     365inline_axiom_files = Comorphisms/Modal2CASL.hs \ 
    367366    Comorphisms/CASL2SubCFOL.hs CASL_DL/PredefinedSign.hs 
    368367