Step
*
of Lemma
array_subtype
∀[Val1,Val2:Type]. ∀[m,n:ℕ].
  (array{i:l}(Val1;m) ⊆r array{i:l}(Val2;n)) supposing ((n ≤ m) and ((Val1 ⊆r Val2) ∧ (Val2 ⊆r Val1)))
BY
{ (Unfold `array` 0 THEN Auto) }
1
1. Val1 : Type
2. Val2 : Type
3. m : ℕ
4. n : ℕ
5. Val1 ⊆r Val2
6. Val2 ⊆r Val1
7. n ≤ m
8. Arr : Type
9. idx : ℕm ⟶ Arr ⟶ Val1
10. upd : ℕm ⟶ Val1 ⟶ Arr ⟶ Arr
11. newarray : Val1 ⟶ Arr
12. x : ⋂i:ℕm. ∀[v:Val1]. ((idx i (newarray v)) = v ∈ Val1)
13. i : ℕn
⊢ x ∈ ∀[v:Val2]. ((idx i (newarray v)) = v ∈ Val2)
2
1. Val1 : Type
2. Val2 : Type
3. m : ℕ
4. n : ℕ
5. Val1 ⊆r Val2
6. Val2 ⊆r Val1
7. n ≤ m
8. Arr : Type
9. idx : ℕm ⟶ Arr ⟶ Val1
10. upd : ℕm ⟶ Val1 ⟶ Arr ⟶ Arr
11. newarray : Val1 ⟶ Arr
12. ∀[i:ℕm]. ∀[v:Val1].  ((idx i (newarray v)) = v ∈ Val1)
13. x : ⋂i:ℕm. ∀[j:ℕm]. ∀[x:Arr]. ∀[v:Val1].  ((idx i (upd j v x)) = if (i =z j) then v else idx i x fi  ∈ Val1)
14. i : ℕn
⊢ x ∈ ∀[j:ℕn]. ∀[x:Arr]. ∀[v:Val2].  ((idx i (upd j v x)) = if (i =z j) then v else idx i x fi  ∈ Val2)
Latex:
Latex:
\mforall{}[Val1,Val2:Type].  \mforall{}[m,n:\mBbbN{}].
    (array\{i:l\}(Val1;m)  \msubseteq{}r  array\{i:l\}(Val2;n))  supposing 
          ((n  \mleq{}  m)  and 
          ((Val1  \msubseteq{}r  Val2)  \mwedge{}  (Val2  \msubseteq{}r  Val1)))
By
Latex:
(Unfold  `array`  0  THEN  Auto)
Home
Index