Ann: DES 6.8 Released

[Apologies for multiple receptions]

Hello.

This is a mail just for informing that the new release

Datalog Educational System version 6.8
http://des.sourceforge.net

Mirrored at: Datalog Educational System

And also its online interface has been made available at:

https://desweb.fdi.ucm.es

has been launched on June, 15th, 2025.

This version includes several upgrades mainly following
needs from teaching. First, the SQL semantic analyzer covers
a wider set of errors, including those that are more common
in the classroom. It detects inconsistency by resorting to
functional dependencies, which can uncover typical errors in
ORDER BY, GROUP BY and DISTINCT, among others. This is
useful not only for this system but also for an automatic
judge such as LearnSQL, which leverages this information for
student feedback. TAPI commands have been extended for such
a use case. Second, the Datalog debugger has been upgraded
by reducing the number of questions posed to the user. Also,
existing debugger commands have been extended, in particular
for its TAPI interface with other systems such as DESweb and
its graphical Datalog debugger. Third, an experimental
implementation of the semi-naïve differential optimization
has been performed in the DES engine, allowing for a better
performance of linear recursive predicates. Fourth, the new
version 0.19 of the desktop Java application ACIDE has been
bundled with DES, including: colour themes, file encoding,
stability and usability improvements. Finally, various
enhancements and new commands have been added to DES, along
with several refinements.

A complete list of enhancements and fixed bugs is attached
to the end of this message.
Please, see http://des.sourceforge.net for details.

Best regards.

=============================================================
Fernando Saenz Perez
Profesor Titular de Universidad / Associate Professor
Home Page: Fernando Sáenz Pérez Home Page Moved
Tel: + 34 913947642. Fax: + 34 913947547
Despacho / Office: 435 (4ª planta / 4th floor)
Dept. Ingenieria del Software e Inteligencia Artificial /
Department of Software Engineering and Artificial
Intelligence
Universidad Complutense de Madrid
Facultad de Informatica
C/Profesor Jose Garcia Santesmases, s/n
E - 28040 Madrid. Spain

=============================================================

Version 6.8 of DES (released on June, 15th, 2025)

  • Enhancements:
    o Enhanced SQL semantic analysis with functional
    dependencies to uncover common pitfalls
    o Added the value loose for the command
    /sql_semantic_check, which includes more probabilities for
    false positives, though with more error detections
    o Avoided some rechecking in SQL semantic warnings
    o Experimental semi-naïve optimization for linear
    recursive predicates
    o Intermediate files from a Datalog debugging session are
    removed. Via TAPI, an ad-hoc command is used for this
    purpose
    o Enhanced full Datalog debugger by avoiding some subset
    questions derived from former user answers
    o Reduced set of automatic questions in the full Datalog
    debugger
    o Included dealing with an abort answer in the command
    /debug_dl
    o Updated help for /debug_dl
    o Wrong and missing data can be specified in the command
    /debug_dl_set_node
    o New semantics for non-deterministic functions and impure
    deterministic functions (and counterpart function
    predicates)
    o Setting fuzzy mode disables non-Datalog languages. As
    well, setting a non-Datalog language in fuzzy mode selects
    (crisp-)Datalog
    o Commands /ls and /dir accepts a filename as argument.
    Also, extended help provided for these commands
    o New predicate and function substr with no length
    o Added support for the ALL and ANY quantifiers in the
    HAVING clause
    o Syntax of PostgreSQL simplified recursive views is
    supported (the same as already provided by DES but adding
    a RECURSIVE keyword)
    o SQL IS NULL operation extended to deal with expressions
    o The function cast can receive an expression as its first
    argument
    o Added exception to show internal errors when processing
    SQL queries
    o Uppercase ODBC connection names in commands do not need
    to be enclosed between single quotes (unless they contain
    a blank space)
    o ODBC connections become case-insensitive
    o Only one pass in the extensional table for fetching
    completed entries during fixpoint computation
    o Top-level goals which have been previously completed are
    not reprocessed (no fixpoint computation for them)
    o Completed top-N goals become cached in the extension
    table
    o Along user inputs, the extension table is only cleared
    for affected predicates
    o Function rand/1 is solved once for each call, avoiding
    resetting the seed along fixpoint computation
    o The command /fp_info also displays statistics at each
    fixpoint iteration if they are enabled
    o When rules are removed (either manually or by the system
    when removing intermediate predicates), only entries in
    the extension table corresponding to those rules are
    removed, instead of clearing all the table
    o Host safety (sandboxing) extended to files out of the
    start path, which are not allowed to be accessed
    o New commands:

    • /debug_dl_cleanup Clean up full Datalog debugger.
      Typically used with TAPI, this command removes temporary
      data and files resulting from a debugging session. TAPI
      enabled
    • /debug_dl_set_node Name/Arity State Set the state for
      a node. State can be valid, nonvalid, missing(Tuple),
      and wrong(Tuple), where Tuple is of the form rel(cte1,
      …, cten), where rel is the relation name and each
      argument ctei is an SQL constant. Placeholders (_) are
      allowed for missing tuples instead of constants. TAPI
      enabled
    • /debug_dl_solutions Display Datalog debugging
      solutions for the current question. TAPI enabled
    • /list_predicate_classes List classes of predicates:
      local (local database, either typed or not), deductive
      database (typed local), mixed database (both in the
      external and deductive databases), external database
      (only from an external connection), user (all predicates
      but built-ins), extensional (only facts or tables),
      recursive (in a recursive cycle), non-recursive (in no
      recursive cycle), non-dependent on recursive (not in a
      recursive cycle and non-dependent on a recursive
      predicate), restricted (with a restricted rule at
      least), dependent on restricted, non-completeable (its
      extension table cannot be closed), non-cacheable (with
      no entries in the extension table), semi-naïve optimized
      (amenable for this optimization)
    • /nodebug Disable debugging in the host Prolog
      interpreter. Only working for source distributions
    • /parse_external_sql Display whether parsing of SQL
      queries sent to external engines is enabled
    • /parse_external_sql Switch Enable or disable parsing
      of SQL queries sent to external engines (on or off,
      resp.)
    • /reset_statistics Reset deductive engine statistics
    • /unset Var Unset the user variable Var so it becomes
      no longer defined up to a new setting
    • /unset_flag FlagName Unset the system flag with name
      FlagName so it becomes no longer defined up to a new
      setting
    • /xpdg Display the extended predicate dependency graph,
      which details the restricted predicates (if existing)
      and their dependencies
    • /xpdg Name Display the current predicate dependency
      graph restricted to predicate with name Name, detailing
      the restricted predicates (if existing) and their
      dependencies
    • /xpdg Name/Arity Display the current predicate
      dependency graph restricted to predicate Name/Arity,
      detailing the restricted predicates (if existing) and
      their dependencies
  • Changes:
    o The commands /drop_all_relations and /drop_all_tables
    apply the CASCADE option
    o The command /get_relation renders null internal
    representation as null for non-TAPI invocations.
    Otherwise, it displays null internal representations
    o Predicates depending on non-deterministic functions
    (such as rand and current_time) are not cached along user
    inputs
    o Non-deterministic functions (such as rand and
    current_time) are evaluated only once for each solving
    path. This is relevant in two scenarios: providing
    different values for different depth calls along
    recursion, and different values for different choice
    points
    o Modified semantics of top-N queries: results are not
    affected by literal ordering

  • Fixed bugs:
    o The file des_pchr.pl was not located where expected and
    the debugging session could not proceed
    o Some functions incorrectly propagated semantic bindings,
    leading to false positives for inconsistent conditions in
    SQL semantic checking
    o Some false positives in semantic warnings for EXCEPT,
    UNION, DIVISION and IN SQL operators
    o False positive in semantic warnings with COUNT DISTINCT
    when several relations were joined
    o False positive in semantic warnings for columns without
    aggregates in the HAVING conditions
    o False positive in semantic warnings for conditions over
    grouped columns occurring in the HAVING clause without an
    aggregate
    o Expressions in disjunctive bodies were not translated
    o Applying the full debugger to a Datalog predicate that
    is not the root in the PDG of a program did not find the
    erroneous predicate
    o Some relations enclosed between parentheses were not
    parsed
    o Some built-in predicate calls were not reordered to
    avoid instantiation exceptions. Some corner cases led to
    incomplete answers
    o Some uses of string casting yield to type errors
    o ODBC connections to Oracle failed
    o With ALTER TABLE it was possible to add existing column
    names
    o Type errors in expressions as arguments of built-in
    infix operators
    o The command /current_flag failed when applied to a user
    flag
    o Dropping delimited tables in Oracle would fail
    o Datalog constant e (Euler number) raised an exception in
    comparison queries (bug introduced in version 6.7)
    o Selecting a string matching a built-in in SQL might fail
    o Open answers led exceptions
    o Non-ground goals in a top-n call might return incomplete
    answers for recursive predicates in the goal solving path
    o Incorrect pending choice point led /fp_info on to
    display spurious text
    o The extension table was not cleared when disabling
    duplicates
    o Some statistics related to the extension table were not
    updated when inserting, deleting and updating in SQL
    statements
    o Under TAPI listings, an exception was raised for foreign
    keys with more than one attribute.

//----------------------------//
// ACIDE 0.19 Release Notes //
// June, 15th 2025 //
//----------------------------//

  • Enhancements, changes and fixed bugs:
    o Theme Management: Allows users to customize color
    schemes for the application’s interface, including font
    settings, and save configurations as themes.
    o File Encoding Selection: Enables users to choose the
    encoding format for loaded files.
    o Persistent Window Dimensions: ACIDE now retains its
    dimensions when restarted.
    o Configurable “Run” Button: Users can personalize the
    execution button behavior.
    o Resizable Number of Rules in Asserted Database: Improves
    visibility and management of rules within the database.
    o Enhanced Console Functionality: Users can now paste
    content directly at the cursor position within the
    console.
    o Project Closure Fix: Corrected ACIDE’s behavior when
    closing an active project.
    o Installer Creation: Developed an ACIDE installer for
    simplified setup.
    o Table Creation Using Datalog: Added support for defining
    tables through Datalog.
    o Line Wrapping Fix: Improved the text wrapping feature in
    the editor.
    o File Format Enhancements: Refined configuration and
    management of file formats.
    o Various Bug Fixes & Performance Optimizations:
    Implemented stability improvements and usability
    enhancements.

IMPORTANT CAVEATS / KNOWN BUGS:
o Ctrl+Mouse Wheel for resizing font display may take long
time depending on the number of open file editors.
o Opening medium-sized text files may take long time due
to lexical analysis. No progress indicators are provided.
Only when all editor windows are processed they are
displayed.
o As an alpha version, there are expected many bugs and
incomplete functionalities. Please report them to
fernan@sip.ucm.es