Definition: permr 
as ≡(T) bs ==  (||as|| = ||bs|| ∈ ℤ) c∧ (∃p:Sym(||as||). ∀i:ℕ||as||. (as[p.f i] = bs[i] ∈ T))
 
Lemma: permr_wf 
∀T:Type. ∀as,bs:T List.  (as ≡(T) bs ∈ ℙ)
 
Lemma: comb_for_permr_wf 
λT,as,bs,z. (as ≡(T) bs) ∈ T:Type ⟶ as:(T List) ⟶ bs:(T List) ⟶ (↓True) ⟶ ℙ
 
Lemma: permr_suptyping 
∀T:Type. ∀Q:T ⟶ ℙ. ∀as,bs:{z:T| Q[z]}  List.  ((as ≡(T) bs) ⇒ (as ≡({z:T| Q[z]} ) bs))
 
Lemma: not_permr_cons_nil 
∀T:Type. ∀a:T. ∀as:T List.  (¬([a / as] ≡(T) []))
 
Lemma: permr_nil_is_nil 
∀T:Type. ∀as:T List.  ((as ≡(T) []) ⇒ (as = [] ∈ (T List)))
 
Lemma: permr_weakening 
∀T:Type. ∀as,bs:T List.  ((as = bs ∈ (T List)) ⇒ (as ≡(T) bs))
 
Lemma: permr_reflex 
∀T:Type. ∀as:T List.  (as ≡(T) as)
 
Lemma: permr_inversion 
∀T:Type. ∀as,bs:T List.  ((bs ≡(T) as) ⇒ (as ≡(T) bs))
 
Lemma: permr_transitivity 
∀T:Type. ∀as,bs,cs:T List.  ((as ≡(T) bs) ⇒ (bs ≡(T) cs) ⇒ (as ≡(T) cs))
 
Lemma: permr_equiv_rel 
∀T:Type. EquivRel(T List;as,bs.as ≡(T) bs)
 
Lemma: cons_functionality_wrt_permr 
∀T:Type. ∀a,b:T. ∀as,bs:T List.  ((a = b ∈ T) ⇒ (as ≡(T) bs) ⇒ ([a / as] ≡(T) [b / bs]))
 
Lemma: permr_functionality_wrt_permr 
∀T,T':Type. ∀as:T List. ∀as':T' List. ∀bs:T List. ∀bs':T' List.
  ((T = T' ∈ Type) ⇒ (as ≡(T) as') ⇒ (bs ≡(T) bs') ⇒ (as ≡(T) bs ⇐⇒ as' ≡(T') bs'))
 
Lemma: perm_f_b_cancel 
∀T:Type. ∀p:Perm(T). ∀x:T.  ((p.f (p.b x)) = x ∈ T)
 
Lemma: perm_b_f_cancel 
∀T:Type. ∀p:Perm(T). ∀x:T.  ((p.b (p.f x)) = x ∈ T)
 
Lemma: perm_b_to_f 
∀T:Type. ∀p:Perm(T). ∀x,y:T.  ((p.b x) = y ∈ T ⇐⇒ x = (p.f y) ∈ T)
 
Lemma: perm_f_inj 
∀T:Type. ∀p:Perm(T). ∀x,y:T.  (((p.f x) = (p.f y) ∈ T) ⇒ (x = y ∈ T))
 
Lemma: perm_b_inj 
∀T:Type. ∀p:Perm(T). ∀x,y:T.  (((p.b x) = (p.b y) ∈ T) ⇒ (x = y ∈ T))
 
Definition: tl_perm 
tl_perm(p) ==  p O txpose_perm(0;p.b 0)
 
Lemma: tl_perm_wf 
∀n:ℕ+. ∀p:Perm(ℕn).  (tl_perm(p) ∈ Perm(ℕ+n))
 
Definition: perm_morph 
perm_morph(S;T;s2t;t2s;p) ==  mk_perm(s2t o (p.f o t2s);s2t o (p.b o t2s))
 
Lemma: perm_morph_wf 
∀S,T:Type. ∀s2t:S ⟶ T. ∀t2s:T ⟶ S.  (InvFuns(S;T;s2t;t2s) ⇒ (∀p:Perm(S). (perm_morph(S;T;s2t;t2s;p) ∈ Perm(T))))
 
Lemma: permr_hd_cancel 
∀T:Type. ∀a:T. ∀bs,bs':T List.  (([a / bs] ≡(T) [a / bs']) ⇒ (bs ≡(T) bs'))
 
Lemma: hd_two_swap_permr 
∀T:Type. ∀as:T List. ∀a,a':T.  ([a; [a' / as]] ≡(T) [a'; [a / as]])
 
Lemma: cons_cons_permr 
∀T:Type. ∀a,a':T. ∀as,as':T List.  ((as ≡(T) as') ⇒ ([a; [a' / as]] ≡(T) [a'; [a / as']]))
 
Lemma: append_functionality_wrt_permr 
∀T:Type. ∀as,as',bs,bs':T List.  ((as ≡(T) as') ⇒ (bs ≡(T) bs') ⇒ ((as @ bs) ≡(T) (as' @ bs')))
 
Lemma: append_comm_1 
∀T:Type. ∀a:T. ∀as:T List.  ((as @ [a]) ≡(T) ([a] @ as))
 
Lemma: append_comm 
∀T:Type. ∀as,bs:T List.  ((as @ bs) ≡(T) (bs @ as))
 
Definition: permr_upto 
as ≡ bs upto x,y.R[x; y]  ==  (||as|| = ||bs|| ∈ ℤ) c∧ (∃p:Sym(||as||). ∀i:ℕ||as||. R[as[p.f i]; bs[i]])
 
Lemma: permr_upto_wf 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ. ∀as,bs:T List.  (as ≡ bs upto x,y.R[x;y]  ∈ ℙ)
 
Lemma: permr_upto_inversion 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.
  (EquivRel(T;x,y.R[x;y]) ⇒ (∀as,bs:T List.  (as ≡ bs upto x,y.R[x;y]  ⇒ bs ≡ as upto x,y.R[x;y] )))
 
Lemma: permr_upto_transitivity 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.
  (EquivRel(T;x,y.R[x;y])
  ⇒ (∀as,bs,cs:T List.  (as ≡ bs upto x,y.R[x;y]  ⇒ bs ≡ cs upto x,y.R[x;y]  ⇒ as ≡ cs upto x,y.R[x;y] )))
 
Lemma: permr_upto_weakening 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.  (EquivRel(T;x,y.R[x;y]) ⇒ (∀as,bs:T List.  ((as ≡(T) bs) ⇒ as ≡ bs upto x,y.R[x;y] )))
 
Lemma: permr_upto_equiv_rel 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.  (EquivRel(T;x,y.R[x;y]) ⇒ EquivRel(T List;xs,ys.xs ≡ ys upto x,y.R[x;y] ))
 
Lemma: permr_upto_functionality_wrt_permr_upto 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.
  (EquivRel(T;x,y.R[x;y])
  ⇒ (∀as,as',bs,bs':T List.
        (as ≡ bs upto x,y.R[x;y] 
        ⇒ as' ≡ bs' upto x,y.R[x;y] 
        ⇒ (as ≡ as' upto x,y.R[x;y]  ⇐⇒ bs ≡ bs' upto x,y.R[x;y] ))))
 
Definition: lequiv 
as = bs upto {x,y.R[x; y]} ==  (||as|| = ||bs|| ∈ ℤ) c∧ (∀i:ℕ||as||. R[as[i]; bs[i]])
 
Lemma: lequiv_wf 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ. ∀as,bs:T List.  (as = bs upto {x,y.R[x;y]} ∈ ℙ)
 
Lemma: cons_functionality_wrt_lequiv 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.
  (EquivRel(T;x,y.R[x;y])
  ⇒ (∀a,b:T. ∀as,bs:T List.  (R[a;b] ⇒ as = bs upto {x,y.R[x;y]} ⇒ [a / as] = [b / bs] upto {x,y.R[x;y]})))
 
Lemma: permr_upto_split 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.
  (EquivRel(T;x,y.R[x;y])
  ⇒ (∀as,bs:T List.  (as ≡ bs upto x,y.R[x;y]  ⇐⇒ ∃cs:T List. ((as ≡(T) cs) ∧ cs = bs upto {x,y.R[x;y]}))))
 
Lemma: cons_functionality_wrt_permr_upto 
∀T:Type. ∀R:T ⟶ T ⟶ ℙ.
  (EquivRel(T;x,y.R[x;y])
  ⇒ (∀a,b:T. ∀as,bs:T List.  (R[a;b] ⇒ as ≡ bs upto x,y.R[x;y]  ⇒ [a / as] ≡ [b / bs] upto x,y.R[x;y] )))
Home
Index