Step
*
of Lemma
fpf-sub-val2
∀[A,A':Type].
  ∀[B:A ─→ Type]
    ∀eq:EqDecider(A'). ∀f,g:a:A fp-> B[a]. ∀x:A'.
      ∀[P,Q:a:A ─→ B[a] ─→ ℙ].
        ((∀x:A. ∀z:B[x].  (P[x;z] 
⇒ Q[x;z])) 
⇒ z != f(x) ==> P[x;z] 
⇒ z != g(x) ==> Q[x;z] supposing g ⊆ f) 
  supposing strong-subtype(A;A')
BY
{ (Repeat ((D 0 THENA Complete (Auto)))
   THEN (AssertBY ⌈eq ∈ EqDecider(A)⌉
           (SubsumeC ⌈EqDecider(A')⌉⋅ THEN Auto THEN BLemma `strong-subtype-deq-subtype` THEN Auto)⋅
         THEN (D 0 THENA Auto)
         )
   THEN (Unfold `fpf-val` 0 THEN D 7 THEN D 6 THEN Unfold `fpf-dom` 0 THEN Reduce 0)⋅) }
1
1. [A] : Type
2. [A'] : Type
3. strong-subtype(A;A')
4. [B] : A ─→ Type
5. eq : EqDecider(A')@i
6. d1 : A List@i
7. f1 : a:{a:A| (a ∈ d1)}  ─→ B[a]@i
8. d : A List@i
9. g1 : a:{a:A| (a ∈ d)}  ─→ B[a]@i
10. x : A'@i
11. [P] : a:A ─→ B[a] ─→ ℙ
12. [Q] : a:A ─→ B[a] ─→ ℙ
13. ∀x:A. ∀z:B[x].  (P[x;z] 
⇒ Q[x;z])@i
14. eq ∈ EqDecider(A)
15. <d, g1> ⊆ <d1, f1>
⊢ ((↑x ∈b d1)) 
⇒ P[x;f1 x]) 
⇒ (↑x ∈b d)) 
⇒ Q[x;g1 x]
Latex:
\mforall{}[A,A':Type].
    \mforall{}[B:A  {}\mrightarrow{}  Type]
        \mforall{}eq:EqDecider(A').  \mforall{}f,g:a:A  fp->  B[a].  \mforall{}x:A'.
            \mforall{}[P,Q:a:A  {}\mrightarrow{}  B[a]  {}\mrightarrow{}  \mBbbP{}].
                ((\mforall{}x:A.  \mforall{}z:B[x].    (P[x;z]  {}\mRightarrow{}  Q[x;z]))
                {}\mRightarrow{}  z  !=  f(x)  ==>  P[x;z]  {}\mRightarrow{}  z  !=  g(x)  ==>  Q[x;z]  supposing  g  \msubseteq{}  f) 
    supposing  strong-subtype(A;A')
By
(Repeat  ((D  0  THENA  Complete  (Auto)))
  THEN  (AssertBY  \mkleeneopen{}eq  \mmember{}  EqDecider(A)\mkleeneclose{}
                  (SubsumeC  \mkleeneopen{}EqDecider(A')\mkleeneclose{}\mcdot{}  THEN  Auto  THEN  BLemma  `strong-subtype-deq-subtype`  THEN  Auto)\mcdot{}
              THEN  (D  0  THENA  Auto)
              )
  THEN  (Unfold  `fpf-val`  0  THEN  D  7  THEN  D  6  THEN  Unfold  `fpf-dom`  0  THEN  Reduce  0)\mcdot{})
Home
Index