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