Step
*
1
3
1
1
1
2
of Lemma
mFOL-proveable-evidence
1. hyps : mFOL() List@i
2. z : ℤ@i
3. (∀h∈hyps.¬(z ∈ mFOL-freevars(h)))
4. body : mFOL()@i
5. x : ℤ@i
6. mFOL-sequent-evidence(<hyps, body[z/x]>)@i'
7. ¬(z ∈ mFOL-freevars(∀x;body)))@i
8. [Dom] : Type
9. [S] : FOStruct(Dom)
10. a : FOAssignment(Dom)@i
11. tuple-type(map(λh.Dom,S,a |= mFOL-abstract(h);hyps))@i
12. v : Dom@i
13. Dom,S,a[z := v] |= mFOL-abstract(body[z/x]) = Dom,S,a[z := v][x := v] |= mFOL-abstract(body) ∈ ℙ
14. Dom,S,a[z := v][x := v] |= mFOL-abstract(body) = Dom,S,a[x := v] |= mFOL-abstract(body) ∈ ℙ
⊢ Dom,S,a[x := v] |= mFOL-abstract(body)
BY
{ Assert ⌈tuple-type(map(λh.Dom,S,a[z := v] |= mFOL-abstract(h);hyps))⌉⋅ }
1
.....assertion..... 
1. hyps : mFOL() List@i
2. z : ℤ@i
3. (∀h∈hyps.¬(z ∈ mFOL-freevars(h)))
4. body : mFOL()@i
5. x : ℤ@i
6. mFOL-sequent-evidence(<hyps, body[z/x]>)@i'
7. ¬(z ∈ mFOL-freevars(∀x;body)))@i
8. [Dom] : Type
9. [S] : FOStruct(Dom)
10. a : FOAssignment(Dom)@i
11. tuple-type(map(λh.Dom,S,a |= mFOL-abstract(h);hyps))@i
12. v : Dom@i
13. Dom,S,a[z := v] |= mFOL-abstract(body[z/x]) = Dom,S,a[z := v][x := v] |= mFOL-abstract(body) ∈ ℙ
14. Dom,S,a[z := v][x := v] |= mFOL-abstract(body) = Dom,S,a[x := v] |= mFOL-abstract(body) ∈ ℙ
⊢ tuple-type(map(λh.Dom,S,a[z := v] |= mFOL-abstract(h);hyps))
2
1. hyps : mFOL() List@i
2. z : ℤ@i
3. (∀h∈hyps.¬(z ∈ mFOL-freevars(h)))
4. body : mFOL()@i
5. x : ℤ@i
6. mFOL-sequent-evidence(<hyps, body[z/x]>)@i'
7. ¬(z ∈ mFOL-freevars(∀x;body)))@i
8. [Dom] : Type
9. [S] : FOStruct(Dom)
10. a : FOAssignment(Dom)@i
11. tuple-type(map(λh.Dom,S,a |= mFOL-abstract(h);hyps))@i
12. v : Dom@i
13. Dom,S,a[z := v] |= mFOL-abstract(body[z/x]) = Dom,S,a[z := v][x := v] |= mFOL-abstract(body) ∈ ℙ
14. Dom,S,a[z := v][x := v] |= mFOL-abstract(body) = Dom,S,a[x := v] |= mFOL-abstract(body) ∈ ℙ
15. tuple-type(map(λh.Dom,S,a[z := v] |= mFOL-abstract(h);hyps))
⊢ Dom,S,a[x := v] |= mFOL-abstract(body)
Latex:
1.  hyps  :  mFOL()  List@i
2.  z  :  \mBbbZ{}@i
3.  (\mforall{}h\mmember{}hyps.\mneg{}(z  \mmember{}  mFOL-freevars(h)))
4.  body  :  mFOL()@i
5.  x  :  \mBbbZ{}@i
6.  mFOL-sequent-evidence(<hyps,  body[z/x]>)@i'
7.  \mneg{}(z  \mmember{}  mFOL-freevars(\mforall{}x;body)))@i
8.  [Dom]  :  Type
9.  [S]  :  FOStruct(Dom)
10.  a  :  FOAssignment(Dom)@i
11.  tuple-type(map(\mlambda{}h.Dom,S,a  |=  mFOL-abstract(h);hyps))@i
12.  v  :  Dom@i
13.  Dom,S,a[z  :=  v]  |=  mFOL-abstract(body[z/x])  =  Dom,S,a[z  :=  v][x  :=  v]  |=  mFOL-abstract(body)
14.  Dom,S,a[z  :=  v][x  :=  v]  |=  mFOL-abstract(body)  =  Dom,S,a[x  :=  v]  |=  mFOL-abstract(body)
\mvdash{}  Dom,S,a[x  :=  v]  |=  mFOL-abstract(body)
By
Assert  \mkleeneopen{}tuple-type(map(\mlambda{}h.Dom,S,a[z  :=  v]  |=  mFOL-abstract(h);hyps))\mkleeneclose{}\mcdot{}
Home
Index