110 likes | 120 Vues
PathLP is a new programming language focusing on path-oriented logic programming, enabling the representation of models as code for efficient error detection and resolution. Designed with a syntax that supports query, constraint, and implementation in Prolog, PathLP enhances modeling capabilities and offers unique features like membership, subtype, and logic equality for robust programming functionalities.
E N D
Path orientedLogic Programming Language Pathlp - Student: Igal Khitron. Advisors: Mira Balaban, Michael Kifer, Stony Brook University, NY, USA. Computer Science Department, Ben-Gurion University of the Negev.
MOTIVATION • Models as program abstractions, could be huge. • Ability to write a model as a programming code. • To run queries about this code. • To find an exact place and description of error. • To fix and just recompile the code.
SOLUTION • New Programming Language. • Model terms (intersection, closure, disjoint, singleton). • The language will support many types of models. • F-OML – F-LOGIC (Kifer and Lausen, 1989) basedObject Modeling Language. • Top layer of PathLP (only PathLP syntax). • PathLP as a regular Logic programming language.
PATHLP SYNTAX • Path Expression as the main structure. • John.spouse.brother[?x • -3.a.8[collect(4, 5, ?y, ?_, ‘^^p’(3, a))] • ].sun[?y]. , Susan.friend sun ?x brother ?y spouse John Mary sister spouse sun brother ?x ?x sun friend Susan ?y ?y
PATHLP SYNTAX – CONT’D • Type path expression. • person!spouse[person]{0..2} • Membership.Bob:male. • Subtype.female::person. • Logic equality. • Fact.John.spouse[Mary]. • Rule.?x.sonOf[?y] :- ?x.childOf[?y], ?x:male. • Query:?- ?x:person, ?x.ageof(2003)[?age], ?age>20.
CONSTRAINTS • Describe forbidden states. • !- ?x.prop1[?y], ?y > 10. • System stability checkprocess. • All deviations are printed. • Cardinality constraints. {3..*}
IMPLEMENTATION • Prolog as Logic language platform. • Problem: reasoning order. • Tabling prolog. • Memoization. • Infinite loops avoidance. • Left Recursion. • XSB (David Warren and others, including Kifer). • 3-valued logic (true, undefined, false). • Prolog as ultimate compiler language – DCG. 0.06 millisec 0.01 millisec
Full Linux KDE working environment Action Shell Interpreter
TESTS • Regular checks. • Huge test case. • University CS Linux file system part (O:) • – 200,000 facts (about 15 for each file). • Name, size, permissions... • Path and last change as lists. • Type expressions, rules, constraints and queries about the file • system correctness. ?- file(?x).inode[?i], file(?y).inode[?i], ?x < ?y. !- ?x:filetype, ?x.name[?name], \ \+ ?x.fullpath[[?name|?]]. ?x:int :- integer(?x)@_prolog, ?x >= 0. filetype!size[int]{1..1}. 'regular file'::plain. 'regular empty file'::plain. plain::filetype. 'symbolic link'::filetype.
PROJECT FEATURES • All Prolog and XSB abilities. • Linux executables. • Multifile. • Full preprocessor: #define, #include, #if, #ifdef, #eval, #exec ... • Improved list library. Difference and infinite lists can be treated. • Special _size property - counts all outgoing edges of the same kind. • Command line program (with history) and multiply arguments.
SUMMARY • This works, but it’s not enough. • We’re going to develop the PathLP. • (For example, module spaces or libraries support.) • We’ll start with F-OML building. • We’ll rest on our laurels. • PathLP domain: pathlp.sf.net . • Project site: www.cs.bgu.ac.il/~khitron/bgu_pathlp .