% Predicate and Function Arity Definitions: % Specifies the number of arguments (arity) for predicates and functions, which is fundamental % for understanding the complexity and capabilities of various logical constructs. Predicates are defined % from Nullary (no arguments) up to Denary (ten arguments), reflecting a range of logical conditions or assertions. % Functions are similarly defined but focus on operations that return a value, extending up to Nonary (nine arguments). p_arity('NullaryPredicate', 0). % No arguments. p_arity('UnaryPredicate', 1). % One argument. p_arity('BinaryPredicate', 2). % Two arguments. p_arity('TernaryPredicate', 3). % Three arguments, and so on. p_arity('QuaternaryPredicate', 4). p_arity('QuinaryPredicate', 5). p_arity('SenaryPredicate', 6). p_arity('SeptenaryPredicate', 7). p_arity('OctaryPredicate', 8). p_arity('NonaryPredicate', 9). p_arity('DenaryPredicate', 10). f_arity('NullaryFunction', 0). % No return value, essentially a procedure. f_arity('UnaryFunction', 1). % Returns a single value, and so on. f_arity('BinaryFunction', 2). f_arity('TernaryFunction', 3). f_arity('QuaternaryFunction', 4). f_arity('QuinaryFunction', 5). f_arity('SenaryFunction', 6). f_arity('SeptenaryFunction', 7). f_arity('OctaryFunction', 8). f_arity('NonaryFunction', 9). % Enforcing Equivalency Between Predicates and Functions: % Establishes a logical framework to equate the conceptual roles of predicates and functions based on arity. % This equivalence bridges the functional programming and logical (declarative) paradigms within Prolog, % allowing a unified approach to defining operations and assertions. (equivalentTypes(PredType,FunctType) ==> (in(FunctorObject,PredType) <==> in(FunctorObject,FunctType))). % Automatically generating equivalency rules based on the arity of predicates and functions. % This facilitates a dynamic and flexible understanding of function and predicate equivalences, % enhancing Prolog's expressive power and semantic richness. ((p_arity(PredType,PA), plus(FA,1,PA), f_arity(FunctType,FA))) ==> equivalentTypes(PredType,FunctType). % Detailed Property Associations: % These associations define and categorize the functionalities and capabilities of various programming constructs. % The categorization aids in the intuitive understanding and systematic analysis of different programming elements, % making the logical structure and execution flow of programs more comprehensible. % Flow Control Structures: % Control structures are essential for directing the execution flow of a program. They enable conditional execution, % looping, and choice between different paths of execution based on logical conditions or external inputs. property('if', flow_control). % Conditional execution based on a boolean expression. property('case', flow_control). % Choice between multiple paths. property('let', flow_control). % Variable binding in a local scope. property('let*', flow_control). % Sequential variable binding with dependency. property('do', flow_control). % Executes a block of code. property('limit', flow_control_modification). % Limits the number of solutions. property('offset', flow_control_modification). % Skips a number of solutions. property('max-time', execution_time_control). % Limits execution time. % Inferring backtracking behavior in flow control structures. This indicates that certain paths % of execution might lead to backtracking, a core concept in Prolog for exploring alternative solutions. property(P, flow_control) ==> property(P, 'OnFailBacktrack'). % Assertions and Testing Mechanisms: % Assertions provide a powerful tool for validating expected conditions or outcomes within a program. % They are critical for debugging and verifying the correctness of logic under various conditions. property('assertTrue', assertions_testing). % Asserts a condition is true. property('assertFalse', assertions_testing). % Asserts a condition is false. property('assertEqual', assertions_testing). % Asserts equality between two values. property('assertNotEqual', assertions_testing). % Asserts inequality. property('assertEqualToResult', assertions_testing). % Asserts a value equals an expected result. % Asserting deterministic outcomes for testing mechanisms. These properties ensure that assertions % yield predictable, binary outcomes (pass or fail) based on the conditions they test. property(P, assertions_testing) ==> property(P, 'Deterministic'). % Special Operators and System Interaction: % Special operators and functionalities enhance Prolog's interaction with its execution environment and system, % enabling dynamic control flows, system-level operations, and interaction with external processes or data. property('!', special_operators). % Cut operator, controls backtracking. property('call!', special_operators). % Dynamically calls a predicate. property('call-fn!', special_operators). % Calls a function dynamically. property('repl!', system_interaction). % Interactive read-eval-print loop. property('pyr!', special_operators). % Example of an extension or plugin call. property('call-cleanup!', resource_management). % Ensures cleanup after execution. property('setup-call-cleanup!', resource_management). % Setup, call, and cleanup pattern. property('with-output-to!', output_redirection). % Redirects output to a different stream. % Deterministic behavior is noted for operations that have predictable outcomes, % while nondeterministic behavior is acknowledged for operations whose results may vary. property('call!', 'Deterministic'). property('call-fn!', 'Nondeterministic'). property('!', 'Deterministic'). % Data Structures and Manipulation: % The definition, organization, and manipulation of data structures are foundational aspects of programming. % These operations facilitate the storage, retrieval, and modification of data in structured forms. property('Cons', data_structures). % Constructs a pair or list. property('collapse', data_manipulation). % Flattens nested structures. property('superpose', data_manipulation). % Overlays data structures. property('sequential', data_manipulation). % Ensures sequential execution. property('TupleConcat', data_structures). % Concatenates tuples. % Operations on data structures are generally deterministic, yielding predictable outcomes based on the inputs and operations. property(P, data_manipulation) ==> property(P, 'Deterministic'). % This comprehensive reorganization and enhancement of comments provide a deeper, structured insight into the % properties and functionalities within a Prolog-like environment, aiming for clarity and enriched understanding. % Associating properties with atoms for detailed understanding and querying % --- Flow Control Structures --- % These properties define the various control flow mechanisms used in programming, % including conditionals, loops, and explicit control statements. They are fundamental % to directing the execution flow of programs. property('if', flow_control). property('case', flow_control). property('let', flow_control). property('let*', flow_control). property('do', flow_control). property('limit', flow_control_modification). property('offset', flow_control_modification). property('max-time', execution_time_control). % Flow control structures might involve backtracking on failure, providing multiple paths for execution. property(P, flow_control) ==> property(P, 'OnFailBacktrack'). % --- Assertions and Testing Mechanisms --- % Assertions are used to validate conditions at runtime. They are essential for testing, % allowing developers to ensure that their code behaves as expected under various conditions. property('assertTrue', assertions_testing). property('assertFalse', assertions_testing). property('assertEqual', assertions_testing). property('assertNotEqual', assertions_testing). property('assertEqualToResult', assertions_testing). % By nature, assertions yield a deterministic outcome (true or false) based on the given condition. property(P, assertions_testing) ==> property(P, 'Deterministic'). % --- Special Operators and System Interaction --- % This category encompasses operators and functions that provide unique or enhanced % functionalities, including system interactions and resource management. property('!', special_operators). property('call!', special_operators). property('call-fn!', special_operators). property('repl!', system_interaction). property('pyr!', special_operators). property('call-cleanup!', resource_management). property('setup-call-cleanup!', resource_management). property('with-output-to!', output_redirection). % Certain operators like 'call!' exhibit deterministic behavior by executing a given goal. property('call!', 'Deterministic'). % Others, like 'call-fn!', might produce different results under different conditions, hence considered nondeterministic. property('call-fn!', 'Nondeterministic'). % The cut operator '!' is deterministic as it decisively affects control flow by preventing backtracking beyond its point of execution. property('!', 'Deterministic'). % --- Data Structures and Manipulation --- % Data structures such as lists, trees, and graphs are crucial for organizing and storing data. % Manipulation includes operations like constructing, modifying, or querying these structures. property('Cons', data_structures). property('collapse', data_manipulation). property('superpose', data_manipulation). property('sequential', data_manipulation). property('TupleConcat', data_structures). % Operations on data structures typically result in deterministic outcomes, producing predictable modifications or constructions. property(P, data_manipulation) ==> property(P, 'Deterministic'). % --- Evaluation and Execution --- % Evaluation and execution properties pertain to how expressions, commands, or functions are processed and run. % This includes interpreting code, printing output, and compiling expressions. property('eval', evaluation_execution). property('eval-for', evaluation_execution). property('echo', evaluation_execution). property('print', evaluation_execution). property('println!', evaluation_execution). property('compile-easy!', evaluation_execution). property('time!', evaluation_execution). % The 'eval' operation could lead to different outcomes based on the input, thus considered nondeterministic. property('eval', 'Nondeterministic'). % Conversely, 'echo' simply reflects its input without alteration, making it deterministic. property('echo', 'Deterministic'). % --- Logic and Comparison --- % Logical and comparison operations are fundamental in programming, enabling decision making % and data comparison. This includes basic logical operations and comparisons between values. property('and', logic_comparison). property('or', logic_comparison). property('not', logic_comparison). % Logical operations result in deterministic outcomes, directly derived from their input values. property(P, logic_comparison) ==> property(P, 'Deterministic'). % --- Additional and Miscellaneous --- % This section covers a variety of functionalities not classified under the previous categories. % It includes system interaction, functional programming utilities, arithmetic operations, % and more, providing a wide range of capabilities. property('atom-replace', data_manipulation). property('fb-member', list_operations). property('nop', control_structure). property('empty', data_validation). property('function', functional_programming). property('return', functional_programming). property('number-of', quantitative_analysis). property('new-space', system_interaction). property('bind!', system_interaction). property('pragma!', system_interaction). property('transfer!', system_interaction). property('registered-python-function', interlanguage_integration). property('S', symbolic_arithmetic). property('Z', symbolic_arithmetic). property('bc-base', recursion_control). property('bc-base-ground', recursion_control). property('bc-rec', recursion_control). % --- Rules for Automatic Property Inference --- % These rules allow for automatic inference of certain properties based on categories, % simplifying the property assignment process and ensuring consistency. property('function', 'VariableArity'). property('return', 'Deterministic'). property(P, system_interaction) ==> property(P, 'Deterministic'). property('fb-member', 'Nondeterministic'). property(P, symbolic_arithmetic) ==> property(P, 'Deterministic'). property(P, recursion_control) ==> property(P, 'Deterministic'). property('bc-rec', 'Nondeterministic'). % This detailed commenting approach provides insights into the rationale behind each property assignment, % facilitating a better understanding of their roles within the system and their implications on program behavior. % Flow control structures indicate branching and looping mechanisms property('!', special_operators). property('if', flow_control). property('case', flow_control). property('let', flow_control). property('let*', flow_control). % 'if' can lead to different execution paths and might be considered nondeterministic property('if', 'Nondeterministic'). property(X, flow_control) ==> property(X, 'OnFailBacktrack'). % Assertions and testing mechanisms for validating conditions or values property('assertTrue', assertions_testing). property('assertFalse', assertions_testing). property('assertEqual', assertions_testing). % Assertions typically produce a deterministic outcome based on their condition property('assertTrue', 'Deterministic'). property('assertFalse', 'Deterministic'). property('assertEqual', 'Deterministic'). % Mapping success/failure in Prolog to True/False for assertions property('assertTrue', 'BooleanFunction'). property('assertFalse', 'BooleanFunction'). % Special operators offer unique or enhanced functionality property('pyr!', special_operators). property('call!', special_operators). property('call-fn!', special_operators). % 'call!' has a deterministic behavior, executing a given goal property('call!', 'Deterministic'). % 'call-fn!' may produce different results, hence nondeterministic property('call-fn!', 'Nondeterministic'). % '!' (cut) decisively affects the control flow by preventing backtracking property('!', 'Deterministic'). % Data structures and manipulation involve creating and working with compound data property('Cons', data_structures). % These operations are typically deterministic, producing a predictable structure property('Cons', 'Deterministic'). property('collapse', 'Deterministic'). property('collapse', flow_control). % Evaluation and execution concern the processing and running of code or expressions property('eval', evaluation_execution). property('echo', evaluation_execution). % 'eval' might evaluate to different outcomes based on its input, thus nondeterministic property('eval', 'Nondeterministic'). % 'echo', simply reflecting its input, is deterministic property('echo', 'Deterministic'). % Logic and comparison for logical operations and value comparisons property('and', logic_comparison). property('or', logic_comparison). property('not', logic_comparison). % Logical operations are deterministic, with outcomes directly derived from their inputs % however they may be consuming a set of nondeterimiistic values so they might "appear" as nondeterministic property('and', 'Deterministic'). property('or', 'Deterministic'). property('not', 'Deterministic'). % General properties provide additional characteristics and behaviors % 'eval' is interpreted, running without prior compilation property('eval', 'Interpreted'). % 'eval-for' also is interpreted due to its dynamic nature property('eval-for', 'Interpreted'). % 'echo' might be considered compiled for efficiency in this hypothetical scenario property('echo', 'Compiled'). % 'let' directly transpiles into another form without modification property('let', 'DirectTranspilation'). % Arity specifics for 'let' and 'call!' property('let', 'PredicateArity', 3). property('call!', 'FunctionArity', 2). % Demonstrating variable arity for 'echo' property('echo', 'VariableArity', 1, 3). % 'coerce' forces argument types, ensuring compatibility property('coerce', 'CoerceArgsToTypes'). % 'coerce' has a predictable outcome, thus deterministic property('coerce', 'Deterministic'). % 'quote' prevents evaluation, returning the input as is property('quote', 'EvalNoArgs'). % 'quote' acts as a data functor, encapsulating values property('quote', 'DataFunctor'). % Default behavior for 'eval' to return self on failure, ensuring robustness property('eval', 'OnFailBacktrack'). % 'let*' supports typed predicates, enhancing type safety property('let*', 'TypedPred'). % Expanding to all mentioned properties and their hypothetical applications % 'quote' represents nondeterminism in this context property('quote', 'Nondeterministic'). % 'echo' involves direct transpilation for simplicity property('echo', 'DirectTranspilation'). % Assuming 'coerce' is compiled for performance reasons property('coerce', 'Compiled'). % 'eval-for' returns the Nth argument, demonstrating specific argument selection property('eval-for', 'ReturnNthArg'). % Skipping evaluation for 'quote', focusing on raw data handling property('quote', 'EvalNoArgs'). % The cut operator '!' is interpreted, directly influencing the Prolog execution flow property('!', 'FunInterpreted'). % 'call!' is compiled, optimizing its execution property('call!', 'FunCompiled'). % 'let*' undergoes idiomatic transpilation, preserving the original logic's essence property('let*', 'IdiomaticTranspilation'). % Introducing 'case' with the behavior to backtrack on failure, facilitating alternative solutions property('case', 'OnFailBacktrack'). % --- Evaluation and Execution Enhancements --- % These properties are related to advanced evaluation and execution features, such as dynamic evaluation % of expressions and runtime execution control. They enable more flexible and powerful programming patterns. property('car-atom', evaluation_execution_enhancements). property('cdr-atom', evaluation_execution_enhancements). % 'car-atom' and 'cdr-atom' allow for manipulation of list structures at runtime, typically in a deterministic manner. property(P, evaluation_execution_enhancements) ==> property(P, 'Deterministic'). % --- Functional Programming Constructs and Utilities --- % Functional programming is characterized by the use of functions as first-class citizens, % promoting a declarative programming style and higher-order functions. property('maplist!', functional_programming). property('concurrent-maplist!', functional_programming). % 'maplist!' applies a function to each element in a list deterministically, whereas % 'concurrent-maplist!' might introduce nondeterminism due to concurrent execution. property('maplist!', 'Deterministic'). property('concurrent-maplist!', 'Nondeterministic'). % --- Arithmetic and Logical Operations --- % Arithmetic operations form the basis of mathematical computations in programming, % including basic operations like addition, subtraction, multiplication, and division. property('+', arithmetic_operations). property('-', arithmetic_operations). property('*', arithmetic_operations). property('mod', arithmetic_operations). % These operations are deterministic, yielding specific results from given numeric inputs. property(P, arithmetic_operations) ==> property(P, 'Deterministic'). % --- Error Handling and Advanced Control Flow Mechanisms --- % Proper error handling is crucial for robust programs, allowing for graceful recovery % from unexpected states or inputs. Advanced control flow mechanisms provide more complex % patterns of execution beyond simple conditional checks and loops. property('catch', error_handling_advanced). property('throw', error_handling_advanced). % Error handling operations like 'catch' and 'throw' can influence the control flow based on runtime conditions, % potentially introducing nondeterminism if the error states or exceptions are not predictable. property('catch', 'Nondeterministic'). property('throw', 'Nondeterministic'). % --- System Interaction and Interlanguage Integration --- % Interacting with the system or integrating with other programming languages extends the capabilities % of Prolog programs, enabling them to leverage external libraries, systems, or frameworks. property('call-string!', system_interaction). % 'call-string!' allows for dynamic execution of Prolog code provided as a string, % which might be nondeterministic depending on the runtime environment and the code being executed. property('call-string!', 'Nondeterministic'). property('registered-python-function', interlanguage_integration). % Registering and invoking Python functions from Prolog illustrates interlanguage integration, % enabling deterministic interoperability with Python codebases. property('registered-python-function', 'Deterministic'). % --- Symbolic Arithmetic and Recursion Control --- % Symbolic arithmetic involves the representation and manipulation of mathematical expressions in symbolic form. % Recursion control is crucial for defining and managing recursive operations, ensuring termination and efficiency. property('S', symbolic_arithmetic). property('Z', symbolic_arithmetic). property('bc-base', recursion_control). property('bc-base-ground', recursion_control). property('bc-rec', recursion_control). % Symbolic arithmetic operations are deterministic, as they follow defined mathematical properties. property(P, symbolic_arithmetic) ==> property(P, 'Deterministic'). % Base cases in recursion are deterministic, ensuring predictable behavior and termination of recursive calls. property('bc-base', 'Deterministic'). property('bc-base-ground', 'Deterministic'). % Recursive operations may introduce nondeterminism, especially when dealing with complex or dynamic data structures. property('bc-rec', 'Nondeterministic'). % This continued explanation and categorization provide a deeper understanding of the properties, % emphasizing the relationship between programming constructs and their expected behaviors in a logical or functional programming context. % --- List Operations and Data Validation --- % Operations on lists and validation of data are fundamental in many programming tasks, % allowing for the manipulation, examination, and assurance of data integrity. property('fb-member', list_operations). property('nop', control_structure). property('empty', data_validation). % 'fb-member' checks for membership in a list, which could have nondeterministic outcomes based on list contents. property('fb-member', 'Nondeterministic'). % 'nop' represents a no-operation, effectively serving as a placeholder or for timing. property('nop', 'Deterministic'). % 'empty' checks for or represents an empty structure or condition, a deterministic operation. property('empty', 'Deterministic'). % --- Resource Management and Output Redirection --- % Managing resources effectively and redirecting output are crucial for creating efficient, % responsive programs and for controlling how and where information is displayed or logged. property('call-cleanup!', resource_management). property('setup-call-cleanup!', resource_management). property('with-output-to!', output_redirection). % These operations ensure deterministic management of resources and output, % following precise specifications for behavior. property('call-cleanup!', 'Deterministic'). property('setup-call-cleanup!', 'Deterministic'). property('with-output-to!', 'Deterministic'). % --- Quantitative Analysis and Symbolic Representation --- % Quantitative analysis involves operations that measure or quantify aspects of data, % while symbolic representation deals with abstract symbols rather than explicit values. property('number-of', quantitative_analysis). property('S', symbolic_arithmetic). property('Z', symbolic_arithmetic). % 'number-of' provides a count or measure, yielding deterministic results. property('number-of', 'Deterministic'). % 'S' (successor) and 'Z' (zero) are used in Peano arithmetic, representing numbers symbolically. property('S', 'Deterministic'). property('Z', 'Deterministic'). % --- Recursion Control and Interlanguage Integration --- % Recursion control is essential for managing recursive algorithms, while interlanguage integration % allows Prolog to interact with and leverage capabilities from other programming languages. property('bc-base', recursion_control). property('bc-base-ground', recursion_control). property('bc-rec', recursion_control). property('registered-python-function', interlanguage_integration). % Base cases in recursion ('bc-base', 'bc-base-ground') ensure predictable termination of recursive calls. property('bc-base', 'Deterministic'). property('bc-base-ground', 'Deterministic'). % Recursive operations ('bc-rec') may introduce complexity, affecting determinism based on data structure and depth. property('bc-rec', 'Nondeterministic'). % Integration with Python ('registered-python-function') demonstrates deterministic interoperability. property('registered-python-function', 'Deterministic'). % --- Enhanced System Interaction and Dynamic Execution --- % Dynamic execution features and enhanced system interaction capabilities extend Prolog's utility, % enabling runtime evaluation of code and interaction with the system or external environments. property('call-string!', system_interaction). % 'call-string!' executes Prolog code provided as a string, potentially introducing nondeterminism % based on the dynamic nature of the executed code and external state. property('call-string!', 'Nondeterministic'). % This further continuation not only enriches the documentation with detailed explanations of each property and its implications but also % fosters a deeper understanding of the sophisticated capabilities within a Prolog environment. Through these verbose commentaries, % the nuanced behaviors and functionalities of programming constructs are elucidated, offering insights into their practical applications and theoretical foundations. % --- Dynamic Code Evaluation and Modification --- % Dynamic code evaluation and modification allow for runtime interpretation and alteration of code, % offering flexibility for adaptive or responsive programming patterns. property('eval', dynamic_evaluation). % 'eval' allows for the execution of dynamically constructed code, which could lead to nondeterministic outcomes % depending on the runtime environment and input data. property('eval', 'Nondeterministic'). % --- Interactivity and Debugging Tools --- % Tools and functionalities that facilitate interactivity with the user or debugging capabilities % enhance the development experience by providing insights into program execution and allowing for real-time interaction. property('trace!', debugging_tools). property('notrace!', debugging_tools). property('rtrace!', debugging_tools). % Debugging commands like 'trace!', 'notrace!', and 'rtrace!' offer deterministic control over tracing and debugging states, % allowing developers to enable or disable debugging modes as needed. property(P, debugging_tools) ==> property(P, 'Deterministic'). % --- Advanced List Operations and Utilities --- % Advanced operations on lists and utility functions provide powerful mechanisms for data manipulation and analysis, % extending the core capabilities for handling lists and collections. property('dedup!', list_utilities). % 'dedup!' removes duplicate elements from a list, providing a deterministic way to ensure unique elements. property('dedup!', 'Deterministic'). % --- Arithmetic and Logic Enhancements --- % Enhancements to arithmetic and logic functionalities support more complex mathematical operations and logical reasoning, % broadening the scope of computational tasks that can be addressed. property('hyperpose', arithmetic_enhancements). % 'hyperpose' could be involved in advanced arithmetic or matrix operations, assumed to be deterministic % for well-defined mathematical transformations. property('hyperpose', 'Deterministic'). % --- Functional Programming Enhancements --- % Enhancements and utilities for functional programming emphasize the use of functions as first-class citizens, % promoting immutability, statelessness, and higher-order functions for more declarative programming approaches. property('maplist!', functional_enhancements). % 'maplist!' applies a function to each element of a list in a deterministic manner, preserving list structure. property('maplist!', 'Deterministic'). % --- System and External Integration --- % System integration and functionalities that enable external integrations extend the capabilities of Prolog % to interact with operating systems, external libraries, or other programming languages. property('call-string!', external_integration). % 'call-string!' dynamically evaluates a string of Prolog code, potentially incorporating external state or data, % which may introduce nondeterminism depending on the specific usage and external dependencies. property('call-string!', 'Nondeterministic'). property('!', 'FunInterpreted'). property('!', special_operators). property('!', special_operators). % Cut operator, controls backtracking. property('*', arithmetic_operations). property('+', arithmetic_operations). property('-', arithmetic_operations). property('Cons', 'Deterministic'). property('Cons', data_structures). property('Cons', data_structures). % Constructs a pair or list. property('S', 'Deterministic'). property('S', symbolic_arithmetic). property('TupleConcat', data_structures). property('TupleConcat', data_structures). % Concatenates tuples. property('Z', 'Deterministic'). property('Z', symbolic_arithmetic). property('and', 'Deterministic'). property('and', logic_comparison). property('assertEqual', 'Deterministic'). property('assertEqual', assertions_testing). property('assertEqual', assertions_testing). % Asserts equality between two values. property('assertEqualToResult', assertions_testing). property('assertEqualToResult', assertions_testing). % Asserts a value equals an expected result. property('assertFalse', 'BooleanFunction'). property('assertFalse', 'Deterministic'). property('assertFalse', assertions_testing). property('assertFalse', assertions_testing). % Asserts a condition is false. property('assertNotEqual', assertions_testing). property('assertNotEqual', assertions_testing). % Asserts inequality. property('assertTrue', 'BooleanFunction'). property('assertTrue', 'Deterministic'). property('assertTrue', assertions_testing). property('assertTrue', assertions_testing). % Asserts a condition is true. property('atom-replace', data_manipulation). property('bc-base', 'Deterministic'). property('bc-base', recursion_control). property('bc-base-ground', 'Deterministic'). property('bc-base-ground', recursion_control). property('bc-rec', 'Nondeterministic'). property('bc-rec', recursion_control). property('bind!', system_interaction). property('call!', 'Deterministic'). property('call!', 'FunCompiled'). property('call!', 'FunctionArity', 2). property('call!', special_operators). property('call!', special_operators). % Dynamically calls a predicate. property('call-cleanup!', 'Deterministic'). property('call-cleanup!', resource_management). property('call-cleanup!', resource_management). % Ensures cleanup after execution. property('call-fn!', 'Nondeterministic'). property('call-fn!', special_operators). property('call-fn!', special_operators). % Calls a function dynamically. property('call-string!', 'Nondeterministic'). property('call-string!', external_integration). property('call-string!', system_interaction). property('car-atom', evaluation_execution_enhancements). property('case', 'OnFailBacktrack'). property('case', flow_control). property('case', flow_control). % Choice between multiple paths. property('catch', 'Nondeterministic'). property('catch', error_handling_advanced). property('cdr-atom', evaluation_execution_enhancements). property('coerce', 'CoerceArgsToTypes'). property('coerce', 'Compiled'). property('coerce', 'Deterministic'). property('collapse', 'Deterministic'). property('collapse', data_manipulation). property('collapse', data_manipulation). % Flattens nested structures. property('collapse', flow_control). property('compile-easy!', evaluation_execution). property('concurrent-maplist!', 'Nondeterministic'). property('concurrent-maplist!', functional_programming). property('dedup!', 'Deterministic'). property('dedup!', list_utilities). property('do', flow_control). property('do', flow_control). % Executes a block of code. property('echo', 'Compiled'). property('echo', 'Deterministic'). property('echo', 'DirectTranspilation'). property('echo', 'VariableArity', 1, 3). property('echo', evaluation_execution). property('empty', 'Deterministic'). property('empty', data_validation). property('eval', 'Interpreted'). property('eval', 'Nondeterministic'). property('eval', 'OnFailBacktrack'). property('eval', dynamic_evaluation). property('eval', evaluation_execution). property('eval-for', 'Interpreted'). property('eval-for', 'ReturnNthArg'). property('eval-for', evaluation_execution). property('fb-member', 'Nondeterministic'). property('fb-member', list_operations). property('function', 'VariableArity'). property('function', functional_programming). property('hyperpose', 'Deterministic'). property('hyperpose', arithmetic_enhancements). property('if', 'Nondeterministic'). property('if', flow_control). property('if', flow_control). % Conditional execution based on a boolean expression. property('let', 'DirectTranspilation'). property('let', 'PredicateArity', 3). property('let', flow_control). property('let', flow_control). % Variable binding in a local scope. property('let*', 'IdiomaticTranspilation'). property('let*', 'TypedPred'). property('let*', flow_control). property('let*', flow_control). % Sequential variable binding with dependency. property('limit', flow_control_modification). property('limit', flow_control_modification). % Limits the number of solutions. property('maplist!', 'Deterministic'). property('maplist!', functional_enhancements). property('maplist!', functional_programming). property('max-time', execution_time_control). property('max-time', execution_time_control). % Limits execution time. property('mod', arithmetic_operations). property('new-space', system_interaction). property('nop', 'Deterministic'). property('nop', control_structure). property('not', 'Deterministic'). property('not', logic_comparison). property('notrace!', debugging_tools). property('number-of', 'Deterministic'). property('number-of', quantitative_analysis). property('offset', flow_control_modification). property('offset', flow_control_modification). % Skips a number of solutions. property('or', 'Deterministic'). property('or', logic_comparison). property('pragma!', system_interaction). property('print', evaluation_execution). property('println!', evaluation_execution). property('pyr!', special_operators). property('pyr!', special_operators). % Example of an extension or plugin call. property('quote', 'DataFunctor'). property('quote', 'EvalNoArgs'). property('quote', 'Nondeterministic'). property('registered-python-function', 'Deterministic'). property('registered-python-function', interlanguage_integration). property('repl!', system_interaction). property('repl!', system_interaction). % Interactive read-eval-print loop. property('return', 'Deterministic'). property('return', functional_programming). property('rtrace!', debugging_tools). property('sequential', data_manipulation). property('sequential', data_manipulation). % Ensures sequential execution. property('setup-call-cleanup!', 'Deterministic'). property('setup-call-cleanup!', resource_management). property('setup-call-cleanup!', resource_management). % Setup, call, and cleanup pattern. property('superpose', data_manipulation). property('superpose', data_manipulation). % Overlays data structures. property('throw', 'Nondeterministic'). property('throw', error_handling_advanced). property('time!', evaluation_execution). property('trace!', debugging_tools). property('transfer!', system_interaction). property('with-output-to!', 'Deterministic'). property('with-output-to!', output_redirection). property('with-output-to!', output_redirection). % Redirects output to a different stream. property(P, arithmetic_operations) ==> property(P, 'Deterministic'). property(P, assertions_testing) ==> property(P, 'Deterministic'). property(P, data_manipulation) ==> property(P, 'Deterministic'). property(P, debugging_tools) ==> property(P, 'Deterministic'). property(P, evaluation_execution_enhancements) ==> property(P, 'Deterministic'). property(P, flow_control) ==> property(P, 'OnFailBacktrack'). property(P, logic_comparison) ==> property(P, 'Deterministic'). property(P, recursion_control) ==> property(P, 'Deterministic'). property(P, symbolic_arithmetic) ==> property(P, 'Deterministic'). property(P, system_interaction) ==> property(P, 'Deterministic'). property(X, flow_control) ==> property(X, 'OnFailBacktrack').