flowlog.c)Flowlog targets ISO/IEC 13211-1 behavior: if you write portable ISO Prolog, it should run the same here as in other ISO-focused systems.
This document describes the conformance strategy for Flowlog built
from flowlog.c.
ISO/IEC 13211-1 defines the language and its built-in predicates. It does not define what an interactive REPL must look like.
Flowlog aims to match ISO semantics for:
asserta/1,
assertz/1, retract/1, abolish/1,
clause/2, current_predicate/1, …) (SECTION
13)open/3, close/1,
read_term/3, write_term/3,
set_input/1, set_output/1, …) (SECTION 08 and
SUBSECTION 17.5)current_prolog_flag/2,
set_prolog_flag/2) and per-call I/O options (SECTION 05.4
and SECTIONS 22/23/24)Code references (section markers in flowlog.c):
The predicate/flag checklist is tracked in:
These are deliberate UX choices for the binary and are not part of the ISO language definition:
; (next),
f (next 5), and a (stream all) like classic
Prolog. In non-TTY mode, Flowlog prints all solutions for
scripting.[file].) as a convenience for loading source files.PARALLELISM.md).This directory includes:
tests/tests/tests/ (see QUAD_TESTS.md)Notes:
build/inria_suite/.tests/inria/setup_inria_suite.sh
applies a couple of small, documented normalizations so the suite
matches modern ISO-focused systems.--engine interp --parallel-profile off) so suite
expectations about ordering/side-effects match ISO-focused
interpreters.--engine wam (or
--engine wamvm) by setting FLOWLOG_ENGINE=wam
(or FLOWLOG_ENGINE=wamvm); this is useful for verifying WAM
engine coverage.wamvm engine does not fall back to
wam, set FLOWLOG_WAMVM_REQUIRE_VM=1 (VM-only
mode). Flowlog also provides make inria-wamvm-vmonly to
lock this in.Some suite files temporarily set unknown=warning and
intentionally call missing predicates to check the flag’s behavior.
Flowlog prints a warning in that case; the suite still passes.
The runner tests/run_inria_suite.sh
suppresses per-test stderr by default to keep output clean. To show
warnings/errors for every file:
FLOWLOG_INRIA_SHOW_STDERR=1 make inriaPassing the INRIA suite is a strong signal, but it is not a
mathematical proof of full ISO compliance. If you find a behavioral
mismatch with another ISO-focused system, please reduce it to a small
repro program and add it to tests/.