Step
*
1
9
1
1
1
1
1
2
of Lemma
FOL-proveable-evidence
1. hyps : mFOL() List
2. concl : mFOL()
3. subgoals : mFOL-sequent() List
4. hypnum : ℕ
5. hypnum < ||hyps||
6. ↑mFOconnect?(hyps[hypnum])
7. mFOconnect-knd(hyps[hypnum]) = "or" ∈ Atom
8. hyps[hypnum] = mFOconnect-left(hyps[hypnum]) ∨ mFOconnect-right(hyps[hypnum]) ∈ mFOL()
9. Dom : Type
10. S : FOStruct+{i:l}(Dom)
11. a : FOAssignment(mFOL-sequent-freevars(<hyps, concl>),Dom)
12. f : tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-left(hyps[hypnum]) / hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
13. g : tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-right(hyps[hypnum]) / hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
14. x : tuple-type(FOL-hyps-meaning(Dom;S;a;hyps))
15. v : Dom,S,a +|= FOL-abstract(hyps[hypnum])
16. a ∈ FOAssignment(mFOL-freevars(hyps[hypnum]),Dom)
17. v ∈ Dom,S,a +|= FOL-abstract(mFOconnect-left(hyps[hypnum]) ∨ mFOconnect-right(hyps[hypnum]))
18. w : Dom,S,a +|= FOL-abstract(mFOconnect-left(hyps[hypnum]) ∨ mFOconnect-right(hyps[hypnum]))
19. v = w ∈ Dom,S,a +|= FOL-abstract(mFOconnect-left(hyps[hypnum]) ∨ mFOconnect-right(hyps[hypnum]))
⊢ case w of inl(a) => f <a, x> | inr(b) => g <b, x> ∈ Dom,S,a +|= FOL-abstract(concl)
BY
{ (Thin (-1)
   THEN RepUR ``FOL-abstract`` (-1)
   THEN Fold `FOL-abstract` (-1)
   THEN RepUR ``FOConnective+ FOSatWith+ let`` (-1)
   THEN All (Fold `FOSatWith+`)) }
1
1. hyps : mFOL() List
2. concl : mFOL()
3. subgoals : mFOL-sequent() List
4. hypnum : ℕ
5. hypnum < ||hyps||
6. ↑mFOconnect?(hyps[hypnum])
7. mFOconnect-knd(hyps[hypnum]) = "or" ∈ Atom
8. hyps[hypnum] = mFOconnect-left(hyps[hypnum]) ∨ mFOconnect-right(hyps[hypnum]) ∈ mFOL()
9. Dom : Type
10. S : FOStruct+{i:l}(Dom)
11. a : FOAssignment(mFOL-sequent-freevars(<hyps, concl>),Dom)
12. f : tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-left(hyps[hypnum]) / hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
13. g : tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-right(hyps[hypnum]) / hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
14. x : tuple-type(FOL-hyps-meaning(Dom;S;a;hyps))
15. v : Dom,S,a +|= FOL-abstract(hyps[hypnum])
16. a ∈ FOAssignment(mFOL-freevars(hyps[hypnum]),Dom)
17. v ∈ Dom,S,a +|= FOL-abstract(mFOconnect-left(hyps[hypnum]) ∨ mFOconnect-right(hyps[hypnum]))
18. w : (Dom,S,a +|= FOL-abstract(mFOconnect-left(hyps[hypnum]))
∨ Dom,S,a +|= FOL-abstract(mFOconnect-right(hyps[hypnum]))) ⋃ (S "false" [])
⊢ case w of inl(a) => f <a, x> | inr(b) => g <b, x> ∈ Dom,S,a +|= FOL-abstract(concl)
Latex:
Latex:
1.  hyps  :  mFOL()  List
2.  concl  :  mFOL()
3.  subgoals  :  mFOL-sequent()  List
4.  hypnum  :  \mBbbN{}
5.  hypnum  <  ||hyps||
6.  \muparrow{}mFOconnect?(hyps[hypnum])
7.  mFOconnect-knd(hyps[hypnum])  =  "or"
8.  hyps[hypnum]  =  mFOconnect-left(hyps[hypnum])  \mvee{}  mFOconnect-right(hyps[hypnum])
9.  Dom  :  Type
10.  S  :  FOStruct+\{i:l\}(Dom)
11.  a  :  FOAssignment(mFOL-sequent-freevars(<hyps,  concl>),Dom)
12.  f  :  tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-left(hyps[hypnum])  /  hyps]))
{}\mrightarrow{}  Dom,S,a  +|=  FOL-abstract(concl)
13.  g  :  tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-right(hyps[hypnum])  /  hyps]))
{}\mrightarrow{}  Dom,S,a  +|=  FOL-abstract(concl)
14.  x  :  tuple-type(FOL-hyps-meaning(Dom;S;a;hyps))
15.  v  :  Dom,S,a  +|=  FOL-abstract(hyps[hypnum])
16.  a  \mmember{}  FOAssignment(mFOL-freevars(hyps[hypnum]),Dom)
17.  v  \mmember{}  Dom,S,a  +|=  FOL-abstract(mFOconnect-left(hyps[hypnum])  \mvee{}  mFOconnect-right(hyps[hypnum]))
18.  w  :  Dom,S,a  +|=  FOL-abstract(mFOconnect-left(hyps[hypnum])  \mvee{}  mFOconnect-right(hyps[hypnum]))
19.  v  =  w
\mvdash{}  case  w  of  inl(a)  =>  f  <a,  x>  |  inr(b)  =>  g  <b,  x>  \mmember{}  Dom,S,a  +|=  FOL-abstract(concl)
By
Latex:
(Thin  (-1)
  THEN  RepUR  ``FOL-abstract``  (-1)
  THEN  Fold  `FOL-abstract`  (-1)
  THEN  RepUR  ``FOConnective+  FOSatWith+  let``  (-1)
  THEN  All  (Fold  `FOSatWith+`))
Home
Index