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, …)open/3, close/1,
read_term/3, write_term/3,
set_input/1, set_output/1, …)current_prolog_flag/2,
set_prolog_flag/2) and per-call I/O optionsThe predicate/flag checklist is tracked in:
These are deliberate UX choices for the binary and are not part of the ISO language definition:
; prompt).[file].) as a convenience for loading source files.PARALLELISM.md).This directory includes:
Notes:
build/inria_suite/.tests/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 test-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 test-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/.