Advancing Path-Oriented Logic Programming: Introducing PathLP Language for Model Abstraction
This project presents PathLP, a novel programming language designed to transform models into executable code, allowing for query execution, error location, and code recompilation. Built on the foundations of F-OML and F-LOGIC, PathLP supports a variety of model types with unique syntax focused on path expressions. It leverages Prolog for implementation, introducing advanced features like memoization, stability checks, and enhanced libraries for file system interactions. The project aims to evolve PathLP through continued development and integration of additional modules.
Advancing Path-Oriented Logic Programming: Introducing PathLP Language for Model Abstraction
E N D
Presentation Transcript
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 .