SlideShare uma empresa Scribd logo
1 de 1
•Why the name “Picat”?
Pattern-matching, Intuitive, Constraints, Actors, Tabling
•Core logic programming concepts
Logic variables (arrays and maps are terms)
Implicit pattern-matching and explicit unification
Explicit non-determinism
•Language constructs for scripting and modeling
Functions, loops, and list comprehensions
•Modules for combinatorial search
The cp, sat, and mip modules for CSPs
The planner module for planning
Niche Applications
Scripting and Modeling
•Constraint solving and optimization
•Planning
•NLP
•Knowledge engineering
•Complex data processing
•Web services
…
Background
Logic programming languages entered the scene of computer
science in the early 1970s as the answer to the need for paradigms
capable of representing and reasoning about different kinds of
knowledge.
In the early 1980s, results from unification theory and the
implementation of the Warren Abstract Machine improved the
efficiency of the Prolog implementations. Afterwards, researchers in
the US and in Europe offered effective frameworks and
implementation to enable the parametric extension of the Prolog
language into a constraint-based framework.
However, logic programming and constraint logic programming
continued to fall short of expectations for knowledge representation
and reasoning. It took researchers almost 10 years to understand how
to effectively embed semantics in a Prolog-style language, leading to
the development of answer set programming (ASP). In parallel with
the evolution of ASP, the notion of tabling was introduced, and was
implemented in Prolog systems, which allows the systems to be used
for supporting dynamic programming-style optimizations.
Picat is the culminating event of these developments. The language
is as declarative as Prolog, but it is more convenient than Prolog in
many aspects. It supports the encoding of problems by using
constraints, and it enables the search for solutions through the use of
constraint and SAT solvers. Picat also provides the use of tabling,
which, in particular, allows the encoding of planning problems in a
programming style.
ApplicationsApplications
SummarySummary
The Picat Language and its Application to Games and AI Problems
Neng-Fa Zhou, Jonathan Fruhman, Jie Mei
Computer and Information Science, Brooklyn College, CUNY
ResourcesResources
Path-finding
Logistics Planning
Puzzles
User’s Guide
http://picat-lang.org/download/picat_guide.pdf
Picat Book
http://www.springer.com/us/book/9783319258812
Håkan Kjellerstrand’s Picat Page
http://www.hakank.org/picat/
Examples
http://picat-lang.org/download/exs.pi
Modules
http://picat-lang.org/modules.html
Google News Group
https://groups.google.com/forum/#!forum/picat-lang
Picat integrates several programming paradigms, including logic
programming, imperative programming, functional programming,
scripting, dynamic programming with tabling, and constraint
programming.
This section compares Picat with Prolog as a logic programming
language, Haskell as a functional programming language, and
Python as a scripting language.
Picat vs. Prolog
Like in Prolog, logic variables in Picat are value holders. A logic
variable can be bound to any term, including another logic
variable. Logic variables are single-assignment, meaning that once
a variable is bound to a value, the variable takes the identity of the
value, and the variable cannot be bound again, unless the value is a
variable or contains variables.
Unlike Prolog, Picat uses pattern-matching, rather than unification,
to select applicable rules for a call. Pattern-matching is a simpler
operation than unification. Pattern-matching rules in Picat are fully
indexed, while Prolog clauses are typically indexed on one
argument. Therefore, Picat can be more scalable than Prolog.
In Prolog, every clause is implicitly backtrackable, and the cut
operator can be utilized to control backtracking. In contrast,
backtrackable rules in Picat must be explicitly denoted.
Picat vs. Haskell
Like Haskell, Picat supports function definitions with pattern-
matching rules. Haskell and Picat, as two declarative programming
languages, discourage the use of side effects in describing
computations.
A major difference between Haskell and Picat is that Haskell is a
statically-typed language, while Picat is a dynamically-typed
language. In Haskell, every variable has a known type at compile
time, while in Picat, a variable is typeless until it is bound to a
value. Although static typing allows the Haskell compiler to detect
type errors and to optimize code generation by automatically
inferring types, Picat is more flexible than Haskell.
Picat vs. Python
Both Python and Picat are dynamically-typed and interpreted
languages that emphasize flexibility and brevity of description
more than the efficiency of programs.
Python is an imperative language, and many of its built-ins have
side effects. Side effects can make code less manageable. In
addition, lists in Picat are linked lists, while lists in Python are
dynamic arrays. Picat supports constant-time access of array
elements, but Picat's arrays are not dynamic.
•Picat is a hybrid of LP, FP, and scripting
Picat provides many tools for modeling and solving combinatorial
search problems
•Picat borrows many features from other languages
Prolog (in particular B-Prolog), Haskell, Scala, Mercury,
Erlang, Python, Ruby, C-family (C++, Java, C#), OCaml,…
•The latest version is available at picat-lang.org
•Supported modules
basic, io, sys, math, os, cp, sat, mip, and util
•More modules will be added
What Is Picat?What Is Picat? ComparisonsComparisons
FundingFunding
NSF CCF1018006 and CCF1618046
CUNY Software Institute
PSC CUNY
ExamplesExamples
import cp.
queens(N) =>
Qs=new_array(N),
Qs :: 1..N,
foreach (I in 1..N-1, J in I+1..N)
Qs[I] #!= Qs[J],
abs(Qs[I]-Qs[J]) #!= J-I
end,
solve([ff],Qs),
writeln(Qs).
table(+,+,-,min)
sp(X,Y,Path,W) ?=>
Path=[(X,Y)],
edge(X,Y,W).
sp(X,Y,Path,W) =>
Path=[(X,Z)|PathR],
edge(X,Z,W1),
sp(Z,Y,PathR,W2),
W=W1+W2.

Mais conteúdo relacionado

Mais procurados

Programming Paradigms Seminar 1
Programming Paradigms Seminar 1Programming Paradigms Seminar 1
Programming Paradigms Seminar 1
neoxiuting
 

Mais procurados (18)

Information Flow based Ontology Mapping - 2002
Information Flow based Ontology Mapping - 2002Information Flow based Ontology Mapping - 2002
Information Flow based Ontology Mapping - 2002
 
Thomas Wolf "Transfer learning in NLP"
Thomas Wolf "Transfer learning in NLP"Thomas Wolf "Transfer learning in NLP"
Thomas Wolf "Transfer learning in NLP"
 
OWLGrEd/CNL: a Graphical Editor for OWL with Multilingual CNL Support
OWLGrEd/CNL: a Graphical Editor for OWL with Multilingual CNL SupportOWLGrEd/CNL: a Graphical Editor for OWL with Multilingual CNL Support
OWLGrEd/CNL: a Graphical Editor for OWL with Multilingual CNL Support
 
Wrap-up of the ANR project GEMOC
Wrap-up of the ANR project GEMOCWrap-up of the ANR project GEMOC
Wrap-up of the ANR project GEMOC
 
R vs Matlab: which one is more powerful and why
R vs Matlab:  which one is more powerful and why R vs Matlab:  which one is more powerful and why
R vs Matlab: which one is more powerful and why
 
Interoperability of Meta-Modeling Tools
Interoperability of Meta-Modeling ToolsInteroperability of Meta-Modeling Tools
Interoperability of Meta-Modeling Tools
 
Programming Paradigms Seminar 1
Programming Paradigms Seminar 1Programming Paradigms Seminar 1
Programming Paradigms Seminar 1
 
Programming Languages
Programming LanguagesProgramming Languages
Programming Languages
 
Comparison of Meta-Modeling Languages
Comparison  of Meta-Modeling LanguagesComparison  of Meta-Modeling Languages
Comparison of Meta-Modeling Languages
 
Julia Computing - an alternative to Hadoop
Julia Computing - an alternative to HadoopJulia Computing - an alternative to Hadoop
Julia Computing - an alternative to Hadoop
 
Mapping-Based Exchange of Models between Meta-Modeling Tools
Mapping-Based Exchange of Models between Meta-Modeling ToolsMapping-Based Exchange of Models between Meta-Modeling Tools
Mapping-Based Exchange of Models between Meta-Modeling Tools
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
 
The Behavioral Coordination Operator Language (BCOoL)
The Behavioral Coordination Operator Language (BCOoL)The Behavioral Coordination Operator Language (BCOoL)
The Behavioral Coordination Operator Language (BCOoL)
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
MATLAB dip Projects
MATLAB dip ProjectsMATLAB dip Projects
MATLAB dip Projects
 
Efficient named entity annotation through pre-empting
Efficient named entity annotation through pre-emptingEfficient named entity annotation through pre-empting
Efficient named entity annotation through pre-empting
 
Programming paradigms
Programming paradigmsProgramming paradigms
Programming paradigms
 

Destaque (6)

Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
 
Kata - Java - Tests - JUnit 4
Kata - Java - Tests - JUnit 4Kata - Java - Tests - JUnit 4
Kata - Java - Tests - JUnit 4
 
Wie verändert sich Testen mit Continuous Delivery?
Wie verändert sich Testen mit Continuous Delivery?Wie verändert sich Testen mit Continuous Delivery?
Wie verändert sich Testen mit Continuous Delivery?
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Ethik im Internet
Ethik im InternetEthik im Internet
Ethik im Internet
 
Java Design Pattern
Java Design PatternJava Design Pattern
Java Design Pattern
 

Semelhante a Poster

Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
Laxman Puri
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For Managers
Atul Shridhar
 
Python programming ppt.pptx
Python programming ppt.pptxPython programming ppt.pptx
Python programming ppt.pptx
nagendrasai12
 

Semelhante a Poster (20)

Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
 
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resume
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resume
 
Srinivas Muddana Resume
Srinivas Muddana ResumeSrinivas Muddana Resume
Srinivas Muddana Resume
 
Python in geospatial analysis
Python in geospatial analysisPython in geospatial analysis
Python in geospatial analysis
 
Python course in hyderabad
Python course in hyderabadPython course in hyderabad
Python course in hyderabad
 
Programming for Problem Solving
Programming for Problem SolvingProgramming for Problem Solving
Programming for Problem Solving
 
Keynote at Converge 2019
Keynote at Converge 2019Keynote at Converge 2019
Keynote at Converge 2019
 
History Of C Essay
History Of C EssayHistory Of C Essay
History Of C Essay
 
Python vs. r for data science
Python vs. r for data sciencePython vs. r for data science
Python vs. r for data science
 
Sudipta_Mukherjee_Resume-Nov_2022.pdf
Sudipta_Mukherjee_Resume-Nov_2022.pdfSudipta_Mukherjee_Resume-Nov_2022.pdf
Sudipta_Mukherjee_Resume-Nov_2022.pdf
 
syllabus app.pdf
syllabus app.pdfsyllabus app.pdf
syllabus app.pdf
 
Sudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfSudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdf
 
LSESU a Taste of R Language Workshop
LSESU a Taste of R Language WorkshopLSESU a Taste of R Language Workshop
LSESU a Taste of R Language Workshop
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For Managers
 
Recent Trends in Translation of Programming Languages using NLP Approaches
Recent Trends in Translation of Programming Languages using NLP ApproachesRecent Trends in Translation of Programming Languages using NLP Approaches
Recent Trends in Translation of Programming Languages using NLP Approaches
 
Python programming ppt.pptx
Python programming ppt.pptxPython programming ppt.pptx
Python programming ppt.pptx
 
Machine learning libraries with python
Machine learning libraries with pythonMachine learning libraries with python
Machine learning libraries with python
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Poster

  • 1. •Why the name “Picat”? Pattern-matching, Intuitive, Constraints, Actors, Tabling •Core logic programming concepts Logic variables (arrays and maps are terms) Implicit pattern-matching and explicit unification Explicit non-determinism •Language constructs for scripting and modeling Functions, loops, and list comprehensions •Modules for combinatorial search The cp, sat, and mip modules for CSPs The planner module for planning Niche Applications Scripting and Modeling •Constraint solving and optimization •Planning •NLP •Knowledge engineering •Complex data processing •Web services … Background Logic programming languages entered the scene of computer science in the early 1970s as the answer to the need for paradigms capable of representing and reasoning about different kinds of knowledge. In the early 1980s, results from unification theory and the implementation of the Warren Abstract Machine improved the efficiency of the Prolog implementations. Afterwards, researchers in the US and in Europe offered effective frameworks and implementation to enable the parametric extension of the Prolog language into a constraint-based framework. However, logic programming and constraint logic programming continued to fall short of expectations for knowledge representation and reasoning. It took researchers almost 10 years to understand how to effectively embed semantics in a Prolog-style language, leading to the development of answer set programming (ASP). In parallel with the evolution of ASP, the notion of tabling was introduced, and was implemented in Prolog systems, which allows the systems to be used for supporting dynamic programming-style optimizations. Picat is the culminating event of these developments. The language is as declarative as Prolog, but it is more convenient than Prolog in many aspects. It supports the encoding of problems by using constraints, and it enables the search for solutions through the use of constraint and SAT solvers. Picat also provides the use of tabling, which, in particular, allows the encoding of planning problems in a programming style. ApplicationsApplications SummarySummary The Picat Language and its Application to Games and AI Problems Neng-Fa Zhou, Jonathan Fruhman, Jie Mei Computer and Information Science, Brooklyn College, CUNY ResourcesResources Path-finding Logistics Planning Puzzles User’s Guide http://picat-lang.org/download/picat_guide.pdf Picat Book http://www.springer.com/us/book/9783319258812 Håkan Kjellerstrand’s Picat Page http://www.hakank.org/picat/ Examples http://picat-lang.org/download/exs.pi Modules http://picat-lang.org/modules.html Google News Group https://groups.google.com/forum/#!forum/picat-lang Picat integrates several programming paradigms, including logic programming, imperative programming, functional programming, scripting, dynamic programming with tabling, and constraint programming. This section compares Picat with Prolog as a logic programming language, Haskell as a functional programming language, and Python as a scripting language. Picat vs. Prolog Like in Prolog, logic variables in Picat are value holders. A logic variable can be bound to any term, including another logic variable. Logic variables are single-assignment, meaning that once a variable is bound to a value, the variable takes the identity of the value, and the variable cannot be bound again, unless the value is a variable or contains variables. Unlike Prolog, Picat uses pattern-matching, rather than unification, to select applicable rules for a call. Pattern-matching is a simpler operation than unification. Pattern-matching rules in Picat are fully indexed, while Prolog clauses are typically indexed on one argument. Therefore, Picat can be more scalable than Prolog. In Prolog, every clause is implicitly backtrackable, and the cut operator can be utilized to control backtracking. In contrast, backtrackable rules in Picat must be explicitly denoted. Picat vs. Haskell Like Haskell, Picat supports function definitions with pattern- matching rules. Haskell and Picat, as two declarative programming languages, discourage the use of side effects in describing computations. A major difference between Haskell and Picat is that Haskell is a statically-typed language, while Picat is a dynamically-typed language. In Haskell, every variable has a known type at compile time, while in Picat, a variable is typeless until it is bound to a value. Although static typing allows the Haskell compiler to detect type errors and to optimize code generation by automatically inferring types, Picat is more flexible than Haskell. Picat vs. Python Both Python and Picat are dynamically-typed and interpreted languages that emphasize flexibility and brevity of description more than the efficiency of programs. Python is an imperative language, and many of its built-ins have side effects. Side effects can make code less manageable. In addition, lists in Picat are linked lists, while lists in Python are dynamic arrays. Picat supports constant-time access of array elements, but Picat's arrays are not dynamic. •Picat is a hybrid of LP, FP, and scripting Picat provides many tools for modeling and solving combinatorial search problems •Picat borrows many features from other languages Prolog (in particular B-Prolog), Haskell, Scala, Mercury, Erlang, Python, Ruby, C-family (C++, Java, C#), OCaml,… •The latest version is available at picat-lang.org •Supported modules basic, io, sys, math, os, cp, sat, mip, and util •More modules will be added What Is Picat?What Is Picat? ComparisonsComparisons FundingFunding NSF CCF1018006 and CCF1618046 CUNY Software Institute PSC CUNY ExamplesExamples import cp. queens(N) => Qs=new_array(N), Qs :: 1..N, foreach (I in 1..N-1, J in I+1..N) Qs[I] #!= Qs[J], abs(Qs[I]-Qs[J]) #!= J-I end, solve([ff],Qs), writeln(Qs). table(+,+,-,min) sp(X,Y,Path,W) ?=> Path=[(X,Y)], edge(X,Y,W). sp(X,Y,Path,W) => Path=[(X,Z)|PathR], edge(X,Z,W1), sp(Z,Y,PathR,W2), W=W1+W2.