Step
*
1
of Lemma
simple-swap-test_wf
1. n : ℕ
2. AType : array{i:l}(ℤ;n)
3. prog : A-map Unit
4. i : ℕn
5. j : ℕn
⊢ A-bind(array-model(AType)) (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) i)) 
  (λin@i.(A-bind(array-model(AType)) (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) j)) 
          (λin@j.(A-bind(array-model(AType)) prog 
                  (λx.(A-bind(array-model(AType)) (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) i)) 
                       (λout@i.(A-bind(array-model(AType)) 
                                (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) j)) 
                                (λout@j.(A-return(array-model(AType)) ((out@i =z in@j) ∧b (out@j =z in@i))))))))))))
  ∈ A-map 𝔹
BY
{ ((Assert A-fetch'(array-model(AType)) i ∈ A-map'(array-model(AType)) ℤ BY
          Auto)
   THEN (Assert A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) i) ∈ A-map ℤ BY
               Auto)
   THEN (Assert A-fetch'(array-model(AType)) j ∈ A-map'(array-model(AType)) ℤ BY
               Auto)
   THEN (Assert A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) j) ∈ A-map ℤ BY
               Auto)) }
1
1. n : ℕ
2. AType : array{i:l}(ℤ;n)
3. prog : A-map Unit
4. i : ℕn
5. j : ℕn
6. A-fetch'(array-model(AType)) i ∈ A-map'(array-model(AType)) ℤ
7. A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) i) ∈ A-map ℤ
8. A-fetch'(array-model(AType)) j ∈ A-map'(array-model(AType)) ℤ
9. A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) j) ∈ A-map ℤ
⊢ A-bind(array-model(AType)) (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) i)) 
  (λin@i.(A-bind(array-model(AType)) (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) j)) 
          (λin@j.(A-bind(array-model(AType)) prog 
                  (λx.(A-bind(array-model(AType)) (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) i)) 
                       (λout@i.(A-bind(array-model(AType)) 
                                (A-coerce(array-model(AType)) (A-fetch'(array-model(AType)) j)) 
                                (λout@j.(A-return(array-model(AType)) ((out@i =z in@j) ∧b (out@j =z in@i))))))))))))
  ∈ A-map 𝔹
Latex:
Latex:
1.  n  :  \mBbbN{}
2.  AType  :  array\{i:l\}(\mBbbZ{};n)
3.  prog  :  A-map  Unit
4.  i  :  \mBbbN{}n
5.  j  :  \mBbbN{}n
\mvdash{}  A-bind(array-model(AType))  (A-coerce(array-model(AType))  (A-fetch'(array-model(AType))  i)) 
    (\mlambda{}in@i.(A-bind(array-model(AType)) 
                    (A-coerce(array-model(AType))  (A-fetch'(array-model(AType))  j)) 
                    (\mlambda{}in@j.(A-bind(array-model(AType))  prog 
                                    (\mlambda{}x.(A-bind(array-model(AType)) 
                                              (A-coerce(array-model(AType))  (A-fetch'(array-model(AType))  i)) 
                                              (\mlambda{}out@i.(A-bind(array-model(AType)) 
                                                                (A-coerce(array-model(AType))  (A-fetch'(array-model(AType))  j)) 
                                                                (\mlambda{}out@j.(A-return(array-model(AType)) 
                                                                                  ((out@i  =\msubz{}  in@j)  \mwedge{}\msubb{}  (out@j  =\msubz{}  in@i))))))))))))  \mmember{}  A-map  \mBbbB{}
By
Latex:
((Assert  A-fetch'(array-model(AType))  i  \mmember{}  A-map'(array-model(AType))  \mBbbZ{}  BY
                Auto)
  THEN  (Assert  A-coerce(array-model(AType))  (A-fetch'(array-model(AType))  i)  \mmember{}  A-map  \mBbbZ{}  BY
                          Auto)
  THEN  (Assert  A-fetch'(array-model(AType))  j  \mmember{}  A-map'(array-model(AType))  \mBbbZ{}  BY
                          Auto)
  THEN  (Assert  A-coerce(array-model(AType))  (A-fetch'(array-model(AType))  j)  \mmember{}  A-map  \mBbbZ{}  BY
                          Auto))
Home
Index