Step * 1 9 1 1 1 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. FOAssignment(mFOL-sequent-freevars(<hyps, concl>),Dom)
12. tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-left(hyps[hypnum]) hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
13. tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-right(hyps[hypnum]) hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
⊢ tuple-type(FOL-hyps-meaning(Dom;S;a;hyps)) ⟶ Dom,S,a +|= FOL-abstract(concl)
BY
(UseWitness ⌜λx.case x.hypnum of inl(a) => f <a, x> inr(b) => g <b, x>⌝⋅
   THEN Auto
   THEN (GenConclAtAddr [2;1] THENA (Auto THEN Unfold `FOL-hyps-meaning` THEN RWO  "length-map" THEN Auto))
   THEN Thin (-1)
   THEN Unfold `FOL-hyps-meaning` -1
   THEN (RWO "select-map" (-1) THENA Auto)
   THEN Reduce (-1)) }

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. FOStruct+{i:l}(Dom)
11. FOAssignment(mFOL-sequent-freevars(<hyps, concl>),Dom)
12. tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-left(hyps[hypnum]) hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
13. tuple-type(FOL-hyps-meaning(Dom;S;a;[mFOconnect-right(hyps[hypnum]) hyps])) ⟶ Dom,S,a +|= FOL-abstract(concl)
14. tuple-type(FOL-hyps-meaning(Dom;S;a;hyps))
15. Dom,S,a +|= FOL-abstract(hyps[hypnum])
⊢ case 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)
\mvdash{}  tuple-type(FOL-hyps-meaning(Dom;S;a;hyps))  {}\mrightarrow{}  Dom,S,a  +|=  FOL-abstract(concl)


By


Latex:
(UseWitness  \mkleeneopen{}\mlambda{}x.case  x.hypnum  of  inl(a)  =>  f  <a,  x>  |  inr(b)  =>  g  <b,  x>\mkleeneclose{}\mcdot{}
  THEN  Auto
  THEN  (GenConclAtAddr  [2;1]
              THENA  (Auto  THEN  Unfold  `FOL-hyps-meaning`  0  THEN  RWO    "length-map"  0  THEN  Auto)
              )
  THEN  Thin  (-1)
  THEN  Unfold  `FOL-hyps-meaning`  -1
  THEN  (RWO  "select-map"  (-1)  THENA  Auto)
  THEN  Reduce  (-1))




Home Index