Step
*
of Lemma
destructor-product
No Annotations
∀[F,G:Type ⟶ Type].  (destructor{i:l}(T.F[T]) 
⇒ destructor{i:l}(T.G[T]) 
⇒ destructor{i:l}(T.F[T] × G[T]))
BY
{ (Auto
   THEN RenameVar `pf' (-2)
   THEN RenameVar `pg' (-1)
   THEN UseWitness ⌜λp.let x,y = p 
                       in let c1,L1 = pf x 
                          in let c2,L2 = pg y 
                             in <λL.<c1 firstn(||L1||;L), c2 nth_tl(||L1||;L)>, L1 @ L2>⌝⋅
   THEN All (Unfold `destructor`)
   THEN (MemTypeCD THENA Auto)
   THEN (GenConcl ⌜pf = f ∈ (x:F[T] ⟶ decomp{i:l}(T.F[T];T;x))⌝⋅ THENA Auto)
   THEN (GenConcl ⌜pg = g ∈ (x:G[T] ⟶ decomp{i:l}(T.G[T];T;x))⌝⋅ THENA Auto)
   THEN ThinVar `pg'
   THEN ThinVar `pf'
   THEN (MemCD THENA Auto)
   THEN D -1
   THEN Reduce 0
   THEN GenConclAtAddr [2;1]
   THEN Thin (-1)
   THEN D -1
   THEN Reduce 0
   THEN GenConclAtAddr [2;1]) }
1
1. F : Type ⟶ Type
2. G : Type ⟶ Type
3. T : {T:Type| T ⊆r Base} 
4. f : x:F[T] ⟶ decomp{i:l}(T.F[T];T;x)
5. g : x:G[T] ⟶ decomp{i:l}(T.G[T];T;x)
6. p1 : F[T]
7. p2 : G[T]
8. con : Constr(T.F[T])
9. v1 : {L:T List| ap-con(con;L) = p1 ∈ F[T]} 
10. v : decomp{i:l}(T.G[T];T;p2)
11. (g p2) = v ∈ decomp{i:l}(T.G[T];T;p2)
⊢ let c2,L2 = v 
  in <λL.<con firstn(||v1||;L), c2 nth_tl(||v1||;L)>, v1 @ L2> ∈ decomp{i:l}(T.F[T] × G[T];T;<p1, p2>)
Latex:
Latex:
No  Annotations
\mforall{}[F,G:Type  {}\mrightarrow{}  Type].
    (destructor\{i:l\}(T.F[T])  {}\mRightarrow{}  destructor\{i:l\}(T.G[T])  {}\mRightarrow{}  destructor\{i:l\}(T.F[T]  \mtimes{}  G[T]))
By
Latex:
(Auto
  THEN  RenameVar  `pf'  (-2)
  THEN  RenameVar  `pg'  (-1)
  THEN  UseWitness  \mkleeneopen{}\mlambda{}p.let  x,y  =  p 
                                          in  let  c1,L1  =  pf  x 
                                                in  let  c2,L2  =  pg  y 
                                                      in  <\mlambda{}L.<c1  firstn(||L1||;L),  c2  nth\_tl(||L1||;L)>,  L1  @  L2>\mkleeneclose{}\mcdot{}
  THEN  All  (Unfold  `destructor`)
  THEN  (MemTypeCD  THENA  Auto)
  THEN  (GenConcl  \mkleeneopen{}pf  =  f\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (GenConcl  \mkleeneopen{}pg  =  g\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  ThinVar  `pg'
  THEN  ThinVar  `pf'
  THEN  (MemCD  THENA  Auto)
  THEN  D  -1
  THEN  Reduce  0
  THEN  GenConclAtAddr  [2;1]
  THEN  Thin  (-1)
  THEN  D  -1
  THEN  Reduce  0
  THEN  GenConclAtAddr  [2;1])
Home
Index