Step
*
1
2
1
of Lemma
recode-tuple_wf
1. f : T:Type ⟶ (L:Type List × h:T ⟶ tuple-type(L) × {j:tuple-type(L) ⟶ T| ∀s:T. ((j (h s)) = s ∈ T)} )
2. u : Type
3. v : Type List
4. h : tuple-type(v) ⟶ Unit
5. v3 : Unit ⟶ tuple-type(v)
6. ∀s:tuple-type(v). ((v3 (h s)) = s ∈ tuple-type(v))
7. L : Type List
8. h1 : u ⟶ tuple-type(L)
9. v6 : tuple-type(L) ⟶ u
10. ∀s:u. ((v6 (h1 s)) = s ∈ u)
11. null(v) = ff
12. ¬0 < 0
⊢ <L @ [], λx.let a,b = x in append-tuple(||L||;0;h1 a;h b), λx.<v6 x, v3 ⋅>> ∈ L':Type List
× h:(u × tuple-type(v)) ⟶ tuple-type(L')
× {j:tuple-type(L') ⟶ (u × tuple-type(v))| ∀s:u × tuple-type(v). ((j (h s)) = s ∈ (u × tuple-type(v)))}
BY
{ xxx((RWO "append-nil" 0 THENA Auto) THEN RepeatFor 2 ((MemCD THEN Try (Complete (Auto)))) THEN Reduce 0)xxx }
1
.....subterm..... T:t
1:n
1. f : T:Type ⟶ (L:Type List × h:T ⟶ tuple-type(L) × {j:tuple-type(L) ⟶ T| ∀s:T. ((j (h s)) = s ∈ T)} )
2. u : Type
3. v : Type List
4. h : tuple-type(v) ⟶ Unit
5. v3 : Unit ⟶ tuple-type(v)
6. ∀s:tuple-type(v). ((v3 (h s)) = s ∈ tuple-type(v))
7. L : Type List
8. h1 : u ⟶ tuple-type(L)
9. v6 : tuple-type(L) ⟶ u
10. ∀s:u. ((v6 (h1 s)) = s ∈ u)
11. null(v) = ff
12. ¬0 < 0
⊢ λx.let a,b = x
in append-tuple(||L||;0;h1 a;h b) ∈ (u × tuple-type(v)) ⟶ tuple-type(L)
2
1. f : T:Type ⟶ (L:Type List × h:T ⟶ tuple-type(L) × {j:tuple-type(L) ⟶ T| ∀s:T. ((j (h s)) = s ∈ T)} )
2. u : Type
3. v : Type List
4. h : tuple-type(v) ⟶ Unit
5. v3 : Unit ⟶ tuple-type(v)
6. ∀s:tuple-type(v). ((v3 (h s)) = s ∈ tuple-type(v))
7. L : Type List
8. h1 : u ⟶ tuple-type(L)
9. v6 : tuple-type(L) ⟶ u
10. ∀s:u. ((v6 (h1 s)) = s ∈ u)
11. null(v) = ff
12. ¬0 < 0
⊢ λx.<v6 x, v3 ⋅> ∈ {j:tuple-type(L) ⟶ (u × tuple-type(v))|
∀s:u × tuple-type(v)
((j let a,b = s in append-tuple(||L||;0;h1 a;h b)) = s ∈ (u × tuple-type(v)))}
Latex:
Latex:
1. f : T:Type {}\mrightarrow{} (L:Type List
\mtimes{} h:T {}\mrightarrow{} tuple-type(L)
\mtimes{} \{j:tuple-type(L) {}\mrightarrow{} T| \mforall{}s:T. ((j (h s)) = s)\} )
2. u : Type
3. v : Type List
4. h : tuple-type(v) {}\mrightarrow{} Unit
5. v3 : Unit {}\mrightarrow{} tuple-type(v)
6. \mforall{}s:tuple-type(v). ((v3 (h s)) = s)
7. L : Type List
8. h1 : u {}\mrightarrow{} tuple-type(L)
9. v6 : tuple-type(L) {}\mrightarrow{} u
10. \mforall{}s:u. ((v6 (h1 s)) = s)
11. null(v) = ff
12. \mneg{}0 < 0
\mvdash{} <L @ [], \mlambda{}x.let a,b = x in append-tuple(||L||;0;h1 a;h b), \mlambda{}x.<v6 x, v3 \mcdot{}>> \mmember{} L':Type List
\mtimes{} h:(u \mtimes{} tuple-type(v)) {}\mrightarrow{} tuple-type(L')
\mtimes{} \{j:tuple-type(L') {}\mrightarrow{} (u \mtimes{} tuple-type(v))| \mforall{}s:u \mtimes{} tuple-type(v). ((j (h s)) = s)\}
By
Latex:
xxx((RWO "append-nil" 0 THENA Auto)
THEN RepeatFor 2 ((MemCD THEN Try (Complete (Auto))))
THEN Reduce 0)xxx
Home
Index