
tent_set(?X, +TV)

   Set X's tentative value to TV

Arguments
   X                   Any term, typically a variable
   TV                  A (nonvar) term

Type
   library(tentative)

Description

	Give a variable (or several variables within a term) a tentative value.
	A tentative value cannot be itself a variable.
	
	If X is a variable without tentative value, it will be given the
	tentative value TV. In addition, its violatedness count will be
	initialised to 0.
	If X already has a tentative value, its tentative value is
	changed to TV. (Note that this may trigger further computation!)
	The violatedness count remains unchanged.
	If X is already instantiated, TV must be a strict instance of X.
	Variables within X are given tentative values from the corresponding
	instantiated parts of TV.
	
    

Modes and Determinism
   tent_set(-, +) is det
   tent_set(+, +) is semidet

Fail Conditions
   TV is not an instance of X

Exceptions
   4 --- TV is not sufficiently instantiated

Examples
   
    ?- tent_set(X, 27).
    X = X{27 -> 0}
    Yes (0.00s cpu)

    ?- tent_set(X, 27), tent_set(X, 99).
    X = X{99 -> 0}
    Yes (0.00s cpu)

    ?- tent_set(foo(X), foo(27)).
    X = X{27 -> 0}
    Yes (0.00s cpu)

    ?- tent_set(X, Y).
    instantiation fault in X tent_set Y
    Abort
    

See Also
   tent_get / 2, has_tent_value / 1, tent_fix / 1
