Instantiation of a universally quantified hypothesis
ph(v1,…,vn,h)
with:
This command allows the assignment of a value to variables which appear, in hypotheses, under the scope of a universal quantifier. The values v1,…,vn are affected to the variables w1,…,wn. If the value of one or several variables is unknown, the keyword _h can be used to signify that the variable(s) will not be instantiated. For example:
will generate the hypothesis corresponding to
G being the initial goal, the goal becomes:
P(v1,…,vn) ∧ Q(v1,…,vn) ⇒ G
The predicates P(w1,…,wn) contain the typing of v1,…,vn.
The user must be aware, though, that the particularization of universally quantified hypotheses is not protected against ill-typing (see chapter 2.2 page §) nor ill-definedness (see chapter 2.3 page §). A bounded variable may be instantiated by an ill-typed or ill-defined value. Thus the user must verify the well-typing and well-definedness before using this command.
This can be checked with hindsight thanks to the mdelta tool (cf. User Manual Version 1.0.).
Given the following:
Hypothesis ENS = {e1,e2,e3,e4,e5} & tt: ENS & uu: ENS & zz: ENS & !vv.(vv: ENS & (not(uu = vv) or not(tt = vv)) => zz = vv) Goal not(tt = uu)
|
The user wishes to use the hypothesis ∀vv.(vv ∈ ENS ∧ (¬(uu = vv) ∨ ¬(tt = vv)) ⇒ zz = vv), by instantiating vv with the value e1.
The proof of vv ∈ ENS ∧ (¬(uu = vv) ∨ ¬(tt = vv)) ⇒ zz = vv will, after instanciation, split itself into two parts:
If these two sub-goals are proved then the sub-goal becomes zz = e1 ⇒ ¬(tt = uu).
PRI> ph(e1,!vv.(vv: ENS & (not(uu = vv) or not(tt = vv)) => zz = vv)) Starting Particularize Hypothesis
|
The predicate of instanciated typing must be proved first:
Goal e1: ENS
|
The pr command allows the discharging of this sub-goal.
PRI> pr
|
The following sub-goal is therefore:
Goal not(uu = e1) or not(tt = e1)
|
Then the user launches the proof kernel:
PRI> pr Starting Prover Call
|
The goal is proved. The next goal is generated in this way:
Goal zz = e1 => not(tt = uu))
|
The predicate zz = e1 can be placed under hypothesis by one of the two pr or dd (see chapter 4.14 page §) commands.