Skip to content

kory33/guarded-queries

This branch is 1 commit ahead of main.

Folders and files

NameName
Last commit message
Last commit date
Mar 28, 2024
May 5, 2023
Sep 28, 2023
Sep 28, 2023
Sep 28, 2023
Aug 30, 2023
Aug 20, 2023
Jan 20, 2025
Jun 1, 2023
Mar 16, 2023
Aug 19, 2023
Mar 17, 2023
Aug 30, 2023
Jul 25, 2024
Mar 10, 2023
Sep 5, 2023
Dec 9, 2024
Apr 16, 2023
Mar 28, 2024

Repository files navigation

guarded-queries

Rewrite GTGD constraints + conjunctive query into a Datalog program.

Quick Start

Install Java 17 and sbt. Run

sbt app/assembly

# Run jar file in the same directory, since GSat requires
# a config.properties file in the working directory
java -jar ./app/target/guarded-saturation-app-0.1.0.jar

Example interaction:

$ java -jar .\app\build\libs\guarded-saturation-0.1.0-all.jar
[guarded-queries app] > help
[guarded-queries app] Available commands:
[guarded-queries app]   add-rule <rule>
[guarded-queries app]   show-rules
[guarded-queries app]   atomic-rewrite
[guarded-queries app]   rewrite <naive|normalizing|dfs-normalizing> <query>
[guarded-queries app]   help
[guarded-queries app]   exit
[guarded-queries app] > add-rule R(x_1, c_1), P(x_1) -> EE y_1. R(c_1, y_1), R(y_1, x_1), P(y_1) 
[guarded-queries app] Registered rule: R(x_1,c_1) ∧ P(x_1) -> ∃y_1. P(y_1) ∧ R(c_1,y_1) ∧ R(y_1,x_1)
[guarded-queries app] > add-rule R(c_1, x_1) -> R(x_1, c_1), P(x_1) 
[guarded-queries app] Registered rule: R(c_1,x_1) -> R(x_1,c_1) ∧ P(x_1)
[guarded-queries app] > rewrite dfs-normalizing EE y. R(c_1, y), R(y, w), R(w, c_3)
[guarded-queries app] Rewriting query:(exists[y]R(c_1,y) & R(y,w) & R(w,c_3))
[guarded-queries app]   using GuardedRuleAndQueryRewriter{saturation=uk.ac.ox.cs.gsat.GSat@22f71333, subqueryEntailmentEnumeration=DFSNormalizingDPTableSEEnumeration{datalogSaturationEngine=io.github.kory33.guardedqueries.core.datalog.saturationengines.NaiveSaturationEngine@13969fbe}}, with registered rules:
[guarded-queries app]   R(x_1,c_1) ∧ P(x_1) -> ∃y_1. P(y_1) ∧ R(c_1,y_1) ∧ R(y_1,x_1)
[guarded-queries app]   R(c_1,x_1) -> R(x_1,c_1) ∧ P(x_1)
Running GSat...

(GSat log...)

[guarded-queries app] Done rewriting query in 2643781300 nanoseconds.
[guarded-queries app] Minimizing the result...
[guarded-queries app] # of subgoal derivation rules in original output: 1895
[guarded-queries app] # of subgoal derivation rules in minimalExactBodyMinimizedRewriting: 23
[guarded-queries app] # of subgoal derivation rules in minimizedRewriting: 7
[guarded-queries app] Done minimizing the result in 98160400 nanoseconds.
[guarded-queries app] Rewritten query:
[guarded-queries app]   Goal atom: IP0_GOAL(w)
[guarded-queries app]   Atomic rewriting part:
[guarded-queries app]     R(GSat_u1,c_1), P(GSat_u1) :- R(c_1,GSat_u1)
[guarded-queries app]     R(GSat_u1,GSat_u2), P(GSat_u1), R(c_1,GSat_u1) :- IP0_NI_0(GSat_u2,GSat_u1)
[guarded-queries app]   Subgoal derivation part:
[guarded-queries app]     IP0_GOAL(w) :- R(w,c_3), IP0_SQ0_GOAL(w)
[guarded-queries app]     IP0_SQ0_SGL_0(x_1) :- R(c_1,x_2), R(x_2,x_1), R(x_2,c_1), P(x_2)
[guarded-queries app]     IP0_SQ0_SGL_0(c_1) :- R(x_2,c_1), R(x_3,c_1), P(x_3)
[guarded-queries app]     IP0_SQ0_GOAL(w) :- IP0_SQ0_SGL_0(w)
[guarded-queries app]     IP0_SQ0_SGL_0(x_1) :- R(x_2,x_1), R(c_1,x_1)
[guarded-queries app]     IP0_SQ0_SGL_0(x_0) :- R(x_0,c_1), P(x_0)
[guarded-queries app]     IP0_SQ0_GOAL(w) :- R(c_1,y), R(y,w)
[guarded-queries app] >

Module Structures

  • core: The core library for rewriting GTGD constraints + conjunctive query into a Datalog program.
  • core-integration-tests: Integration tests for rewriting algorithms.
  • app: A command-line application that uses the core library. Provides an interface as shown in the Quick Start section.
  • formula-parsers: Parsers for GTGD constraints + conjunctive query. Used by app and integration tests.

About

Querying the Infinite Chase.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published