4.44 Suggest for exist

Instantiation of the existentially qualified goal

Syntax

  se(v1,,vn)

with:

Use

This command allows to chose the instantiation of variables, under the scope of an existential quantifier which appears in the current goal. If the goal is as follows:

  (w1,,wn).P(w1,,wn)

then the goal becomes:

  P(v1,,vn)

This command is not protected against ill-typing (see chapter 2.2 page §) nor ill-definedness (see chapter 2.3 page §) of the values with which we instantiate variables. Thus one must be careful to not introduce ill-typed or ill-defined expressions.

This can be checked with hindsight thanks to the mdelta tool (cf. User Manual Version 1.0.).

If the value of one or several variables is unknown or must remain undetermined, it is possible to use the keyword _h, so as not to instantiate the chosen variables. For example, if the goal is:

    #(aa,bb,cc,dd).P(aa,bb,cc,dd)

then

    se(e1,ENS1,_h,(MAXINT-ff(3)))

will transform the goal into

    #cc.P(e1,ENS1,cc,(MAXINT-ff(3)))

Example

Given the following situation:


 
    Hypothesis  
        ENS = {e1,e2,e3,e4,e5} &  
        uu: ENS &  
        zz: ENS &  
    Goal  
        #kk.(kk: ENS & not(kk = uu) & not(kk = zz))  
 


The user may replace the kk variable by a judiciously chosen value.


 
PRI> se(e1)  
Starting Suggest for Exist  
 


In this case, the current goal is replaced by the goal containing the instantiated kk variable.


 
    Goal  
        e1: ENS & not(e1 = uu) & not(e1 = zz)