LARA

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sav08:non-ground_instantiation_and_resolution [2008/04/02 10:49]
vkuncak
sav08:non-ground_instantiation_and_resolution [2015/04/21 17:30]
Line 1: Line 1:
-====== Non-Ground Instantiation and Resolution ====== 
- 
-===== Non-Ground Resolution ==== 
- 
-Why apply resolution only on ground terms? 
-Consider arbitrary clauses $C, D$ and any atom $A$. 
-\[ 
-\frac{C \cup \{\lnot A\}\ \ \ D \cup \{A\}} 
-     {C \cup D} 
-\] 
-++++Is this non-ground resolution rule sound?| 
-\[ 
-\frac{(\forall \vec x.\ (\lnot C) \rightarrow \lnot A)\ \ \ (\forall \vec x. (\lnot A) \rightarrow D)} 
-     ​{\forall \vec x.\ \lnot C \rightarrow D} 
-\] 
-++++ 
- 
-===== Non-Ground Instantiation ==== 
- 
-For arbitrary substitution:​ 
-\[ 
-\frac{C}{subst(\sigma)(C)} 
-\] 
-++++Is this non-ground instantiation rule sound?| 
-\[ 
-\frac{\forall \vec x.\ C}{\forall \vec x.\ subst(\sigma)(C)} 
-\] 
-(Here $\vec x$ contains both variables in domain and in range of $\sigma$.) 
-++++ 
- 
-Illustration of rules. 
- 
-===== Combining Instantiation and Resolution ===== 
- 
-These two are more powerful rules. 
- 
-But we therefore have more choices at each step. 
- 
-If we try to do the proof, how do we know what to instantiate with? ++|we instantiate to enable subsequent resolution rule.++ 
- 
-**Instantiation followed by resolution:​** 
-\[ 
-\frac{C \cup \{\lnot A_1\}\ \ \ D \cup \{A_2\}} 
-     ​{subst(\sigma_1)(C) \cup subst(\sigma_2)(D)} 
-\] 
-such that $subst(\sigma_1)(A_1) = subst(\sigma_2)(A_2)$. 
- 
-This rule generalizes the above non-ground resolution and ground resolution. 
- 
-Note: if we apply instantiation that renames variables in each clause, then $\sigma_1$ and $\sigma_2$ can have disjoint domains and we let $\sigma = \sigma_1 \cup \sigma_2$, obtaining 
- 
-One complete proof system contains: 
-  * instantiation followed by resolution 
-  * instantiation 
- 
-Note: $\sigma$ such that $subst(\sigma)(A_1) = subst(\sigma)(A_2)$ is called a **unifier** for $\{A_1,​A_2\}$. 
- 
-Note: a //​renaming//​ is substitution whose domain and codomain are variables and which is injective. ​ That, is, it renames variables without clashing variable names. 
- 
-Further step: do we need to consider all possible unifiers? 
- 
-Most general unifier for $\{A_1,​A_2\}$,​ denoted $mgu(A_1,​A_2)$ 
- 
-To compute it we can use the standard [[Unification]] algorithm.