Fresh variable

From testwiki
Jump to navigation Jump to search

Template:Multiple issues

In formal reasoning, in particular in mathematical logic, computer algebra, and automated theorem proving, a fresh variable is a variable that did not occur in the context considered so far.[1]Template:Cn The concept is often used without explanation.[2]Template:Cn

Fresh variables may be used to replace other variables, to eliminate variable shadowing or capture. For instance, in alpha-conversion, the processing of terms in the lambda calculus into equivalent terms with renamed variables, replacing variables with fresh variables can be helpful as a way to avoid accidentally capturing variables that should be free.[3] Another use for fresh variables involves the development of loop invariants in formal program verification, where it is sometimes useful to replace constants by newly introduced fresh variables.[4]

Example

For example, in term rewriting, before applying a rule l→r to a given term t, each variable in l→r should be replaced by a fresh one to avoid clashes with variables occurring in t.Template:Cn Given the rule append⁡(cons⁡(x,y),z)→cons⁡(x,append⁡(y,z)) and the term append⁡(cons⁡(x,cons⁡(y,nil)),cons⁡(3,nil)), attempting to find a matching substitution of the rule's left-hand side, append⁡(cons⁡(x,y),z), within append⁡(cons⁡(x,cons⁡(y,nil)),cons⁡(3,nil)) will fail, since y cannot match cons⁡(y,nil). However, if the rule is replaced by a fresh copyTemplate:Efn append⁡(cons⁡(v1,v2),v3)→cons⁡(v1,append⁡(v2,v3)) before, matching will succeed with the answer substitution {v1↦x,v2↦cons⁡(y,nil),v3↦cons⁡(3,nil)}.

Notes

Template:Notelist

References

Template:Reflist

Template:Logic-stub