Definition: rel_exp
R^n ==  fix((λrel_exp,n. if (n =z 0) then λx,y. (x = y ∈ T) else λx,y. ∃z:T. ((x R z) ∧ (z (rel_exp (n - 1)) y)) fi )) n
Lemma: rel_exp_wf
∀[n:ℕ]. ∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  (R^n ∈ T ⟶ T ⟶ ℙ)
Lemma: decidable__rel_exp
∀k,n:ℕ.  ∀[R:ℕn ⟶ ℕn ⟶ ℙ]. ((∀i,j:ℕn.  Dec(i R j)) 
⇒ (∀i,j:ℕn.  Dec(i R^k j)))
Lemma: rel_exp_add
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀m,n:ℕ.  ∀[x,y,z:T].  ((x R^m y) 
⇒ (y R^n z) 
⇒ (x R^m + n z))
Lemma: rel_exp_add_iff
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀m,n:ℕ. ∀x,z:T.  (x R^m + n z 
⇐⇒ ∃y:T. ((x R^m y) ∧ (y R^n z)))
Lemma: rel_exp_add-ext
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀m,n:ℕ.  ∀[x,y,z:T].  ((x R^m y) 
⇒ (y R^n z) 
⇒ (x R^m + n z))
Lemma: rel_exp1
∀[T:Type]. ∀[R:T ⟶ T ⟶ Type]. ∀[x:T].  ∀y:T. (R^1 x y 
⇐⇒ R x y)
Definition: rel_implies
R1 => R2 ==  ∀x,y:T.  ((x R1 y) 
⇒ (x R2 y))
Lemma: rel_implies_wf
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 => R2 ∈ ℙ)
Lemma: rel_exp_monotone
∀n:ℕ. ∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 => R2 
⇒ R1^n => R2^n)
Definition: preserved_by
R preserves P ==  ∀x,y:T.  ((P x) 
⇒ (x R y) 
⇒ (P y))
Lemma: preserved_by_wf
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R:T ⟶ T ⟶ ℙ].  (R preserves P ∈ ℙ)
Lemma: preserved_by_monotone
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  ((∀x,y:T.  ((x R1 y) 
⇒ (x R2 y))) 
⇒ R2 preserves P 
⇒ R1 preserves P)
Definition: cond_rel_implies
when P, R1 => R2 ==  ∀x,y:T.  ((P x) 
⇒ (x R1 y) 
⇒ (x R2 y))
Lemma: cond_rel_implies_wf
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (when P, R1 => R2 ∈ ℙ)
Lemma: cond_rel_exp_monotone
∀n:ℕ. ∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (when P, R1 => R2 
⇒ R1 preserves P 
⇒ when P, R1^n => R2^n)
Definition: rel_star
R^* ==  λx,y. ∃n:ℕ. (x R^n y)
Lemma: rel_star_wf
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  (R^* ∈ T ⟶ T ⟶ ℙ)
Lemma: rel_star_monotone
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 => R2 
⇒ R1^* => R2^*)
Lemma: cond_rel_star_monotone
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (when P, R1 => R2 
⇒ R1 preserves P 
⇒ when P, R1^* => R2^*)
Lemma: rel_star_transitivity
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[x,y,z:T].  ((x (R^*) y) 
⇒ (y (R^*) z) 
⇒ (x (R^*) z))
Lemma: rel_star_transitivity_ext
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[x,y,z:T].  ((x (R^*) y) 
⇒ (y (R^*) z) 
⇒ (x (R^*) z))
Definition: rel-connected
x──R⟶y ==  x (R^*) y
Lemma: rel-connected_wf
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[x,y:T].  (x──R⟶y ∈ ℙ)
Lemma: rel-connected_transitivity
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[x,y,z:T].  (x──R⟶y 
⇒ y──R⟶z 
⇒ x──R⟶z)
Lemma: rel-connected_weakening
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[x,y:T].  x──R⟶y supposing x = y ∈ T
Lemma: test-rel-connected
∀T:Type. ∀R:T ⟶ T ⟶ ℙ. ∀x,y,z,w:T.  ((x (R^*) y) 
⇒ (y = z ∈ T) 
⇒ (z (R^*) w) 
⇒ (x (R^*) w))
Lemma: rel_star_monotonic
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  ∀x,y:T.  (R1 => R2 
⇒ (x (R1^*) y) 
⇒ (x (R2^*) y))
Lemma: cond_rel_star_monotonic
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,R2:T ⟶ T ⟶ ℙ].
  (when P, R1 => R2 
⇒ R1 preserves P 
⇒ (∀x,y:T.  ((P x) 
⇒ (x (R1^*) y) 
⇒ (x (R2^*) y))))
Lemma: preserved_by_star
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R:T ⟶ T ⟶ ℙ].  (R preserves P 
⇒ R^* preserves P)
Lemma: rel_star_closure
∀[T:Type]. ∀[R,R2:T ⟶ T ⟶ ℙ].
  (Trans(T)(R2[_1;_2]) 
⇒ (∀x,y:T.  ((x R y) 
⇒ (x R2 y))) 
⇒ (∀x,y:T.  ((x (R^*) y) 
⇒ ((x R2 y) ∨ (x = y ∈ T)))))
Lemma: rel_star_closure2
∀[T:Type]. ∀[R,R2:T ⟶ T ⟶ ℙ].
  (Refl(T)(R2[_1;_2]) 
⇒ Trans(T)(R2[_1;_2]) 
⇒ (∀x,y:T.  ((x R y) 
⇒ R2[x;y])) 
⇒ (∀x,y:T.  ((x (R^*) y) 
⇒ R2[x;y])))
Lemma: rel_star_of_equiv
∀[T:Type]. ∀[E:T ⟶ T ⟶ ℙ].  ∀x,y:T.  (EquivRel(T)(_1 E _2) 
⇒ (x (E^*) y) 
⇒ (x E y))
Lemma: cond_rel_star_equiv
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,E:T ⟶ T ⟶ ℙ].
  (EquivRel(T)(_1 E _2) 
⇒ when P, R1 => E 
⇒ R1 preserves P 
⇒ when P, R1^* => E)
Lemma: rel_rel_star
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀x,y:T.  ((x R y) 
⇒ (x (R^*) y))
Lemma: rel_star_trans
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀x,y,z:T.  ((x R y) 
⇒ (y (R^*) z) 
⇒ (x (R^*) z))
Lemma: rel_star_weakening
∀[T:Type]. ∀[x,y:T]. ∀[R:T ⟶ T ⟶ ℙ].  x (R^*) y supposing x = y ∈ T
Definition: rel_inverse
R^-1 ==  λx,y. (y R x)
Lemma: rel_inverse_wf
∀[T1,T2:Type]. ∀[R:T1 ⟶ T2 ⟶ ℙ].  (R^-1 ∈ T2 ⟶ T1 ⟶ ℙ)
Lemma: rel_inverse_exp
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀n:ℕ. ∀x,y:T.  (x R^n^-1 y 
⇐⇒ x R^-1^n y)
Lemma: rel_inverse_star
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀x,y:T.  (x R^*^-1 y 
⇐⇒ x (R^-1^*) y)
Lemma: rel_star_symmetric
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  (Sym(T;x,y.x R y) 
⇒ Sym(T;x,y.x (R^*) y))
Lemma: rel_star_symmetric_2
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ∀x,y:T.  (Sym(T;x,y.x R y) 
⇒ (x (R^*) y) 
⇒ (y (R^*) x))
Lemma: preserved_by_symmetric
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R:T ⟶ T ⟶ ℙ].  (Sym(T;x,y.x R y) 
⇒ R preserves P 
⇒ R^-1 preserves P)
Definition: rel_or
R1 ∨ R2 ==  λx,y. ((x R1 y) ∨ (x R2 y))
Lemma: rel_or_wf
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 ∨ R2 ∈ T ⟶ T ⟶ ℙ)
Lemma: rel_implies_or_left
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  R1 => R1 ∨ R2
Lemma: rel_implies_or_right
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  R2 => R1 ∨ R2
Lemma: symmetric_rel_or
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (Sym(T;x,y.x R1 y) 
⇒ Sym(T;x,y.x R2 y) 
⇒ Sym(T;x,y.x (R1 ∨ R2) y))
Lemma: preserved_by_or
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 preserves P 
⇒ R2 preserves P 
⇒ R1 ∨ R2 preserves P)
Definition: rel_equivalent
R1 
⇐⇒ R2 ==  ∀x,y:T.  (R1 x y 
⇐⇒ R2 x y)
Lemma: rel_equivalent_wf
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 
⇐⇒ R2 ∈ ℙ)
Lemma: rel_equivalent_weakening
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  R1 
⇐⇒ R2 supposing R1 = R2 ∈ (T ⟶ T ⟶ ℙ)
Lemma: rel_implies_weakening
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 
⇐⇒ R2 
⇒ R1 => R2)
Lemma: rel_implies_transitivity
∀[T:Type]. ∀[R1,R2,R3:T ⟶ T ⟶ ℙ].  (R1 => R2 
⇒ R2 => R3 
⇒ R1 => R3)
Lemma: rel_equivalent_transitivity
∀[T:Type]. ∀[R1,R2,R3:T ⟶ T ⟶ ℙ].  (R1 
⇐⇒ R2 
⇒ R2 
⇐⇒ R3 
⇒ R1 
⇐⇒ R3)
Lemma: rel_equivalent_inversion
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 
⇐⇒ R2 
⇒ R2 
⇐⇒ R1)
Definition: rel_rev_implies
R1 
⇐ R2 ==  R2 => R1
Lemma: rel_rev_implies_wf
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 
⇐ R2 ∈ ℙ)
Lemma: rel_rev_implies_weakening
∀[T:Type]. ∀[R1,R2:T ⟶ T ⟶ ℙ].  (R1 
⇐⇒ R2 
⇒ R1 
⇐ R2)
Lemma: rel_implies_functionality
∀[T:Type]. ∀[A1,A2,B1,B2:T ⟶ T ⟶ ℙ].  (A1 
⇐ A2 
⇒ B1 => B2 
⇒ {A1 => B1 
⇒ A2 => B2})
Definition: rel-comp
(R1 o R2) ==  λx,z. ∃y:B. ((R1 x y) ∧ (R2 y z))
Lemma: rel-comp_wf
∀[A,B,C:Type]. ∀[R1:A ⟶ B ⟶ ℙ]. ∀[R2:B ⟶ C ⟶ ℙ].  ((R1 o R2) ∈ A ⟶ C ⟶ ℙ)
Lemma: rel-comp-exp
∀[T:Type]. ∀[R,S:T ⟶ T ⟶ ℙ].  ∀n:ℕ. (R o S)^n 
⇐⇒ if (n =z 0) then λx,y. (x = y ∈ T) else (R o ((S o R)^n - 1 o S)) fi\000C 
Lemma: rel-comp-star
∀[T:Type]. ∀[R,S:T ⟶ T ⟶ ℙ].  (R o S)^* 
⇐⇒ (R o ((S o R)^* o S)) ∨ (λx,y. (x = y ∈ T))
Definition: isect-rel
⋂i:T. R[i] ==  λx,y. ∀i:T. (R[i] x y)
Lemma: isect-rel_wf
∀[T,A:Type]. ∀[R:T ⟶ A ⟶ A ⟶ ℙ].  (⋂i:T. R[i] ∈ A ⟶ A ⟶ ℙ)
Definition: rel-monotone
rel-monotone{i:l}(T;R.F[R]) ==  ∀R1,R2:T ⟶ T ⟶ ℙ.  (R1 => R2 
⇒ F[R1] => F[R2])
Lemma: rel-monotone_wf
∀[T:Type]. ∀[F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ].  (rel-monotone{i:l}(T;R.F[R]) ∈ ℙ')
Definition: rel-continuous
rel-continuous{i:l}(T;R.F[R]) ==  ∀R:ℕ ⟶ T ⟶ T ⟶ ℙ. ⋂n:ℕ. F[R n] => F[⋂n:ℕ. R n]
Lemma: rel-continuous_wf
∀[T:Type]. ∀[F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ].  (rel-continuous{i:l}(T;R.F[R]) ∈ ℙ')
Definition: bigrel
If for R a relation on T (i.e. a member of type T ⟶ T ⟶ ℙ)
F(R) is another relation on T, then νR.F[R] is meant to be the
greatest relation on T that is a fixed point of F.
If F has the properties 
rel-monotone{i:l}(T;R.F[R]) and 
rel-continuous{i:l}(T;R.F[R])
then this will be so 
(see bigrel-iff) ⋅
νR.F[R] ==  ⋂n:ℕ. primrec(n;λx,y. True;λm,R. F[R])
Lemma: bigrel_wf
∀[T:𝕌']. ∀[F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ].  (νR.F[R] ∈ T ⟶ T ⟶ ℙ)
Lemma: bigrel-iff
∀[T:Type]
  ∀F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ
    (rel-monotone{i:l}(T;R.F[R]) 
⇒ rel-continuous{i:l}(T;R.F[R]) 
⇒ (νR.F[R] => F[νR.F[R]] ∧ F[νR.F[R]] => νR.F[R]))
Lemma: bigrel-induction
∀[T:Type]
  ∀P:(T ⟶ T ⟶ ℙ) ⟶ ℙ. ∀F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ.
    ((∀Rs:ℕ ⟶ T ⟶ T ⟶ ℙ. ((∀n:ℕ. P[Rs[n]]) 
⇒ P[⋂n:ℕ. Rs[n]]))
    
⇒ (∀R:T ⟶ T ⟶ ℙ. (P[R] 
⇒ P[F[R]]))
    
⇒ P[λx,y. True]
    
⇒ P[νR.F[R]])
Lemma: bigrel-induction-monotone
∀[T:Type]
  ∀P:(T ⟶ T ⟶ ℙ) ⟶ ℙ. ∀F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ.
    (rel-monotone{i:l}(T;R.F[R])
    
⇒ (∀Rs:ℕ ⟶ T ⟶ T ⟶ ℙ. ((∀n:ℕ. Rs[n + 1] => Rs[n]) 
⇒ (∀n:ℕ. P[Rs[n]]) 
⇒ P[⋂n:ℕ. Rs[n]]))
    
⇒ (∀R:T ⟶ T ⟶ ℙ. (P[R] 
⇒ P[F[R]]))
    
⇒ P[λx,y. True]
    
⇒ P[νR.F[R]])
Lemma: implies-bigrel
∀[T:Type]
  ∀F:(T ⟶ T ⟶ ℙ) ⟶ T ⟶ T ⟶ ℙ. (rel-monotone{i:l}(T;R.F[R]) 
⇒ (∀R':T ⟶ T ⟶ ℙ. (R' => F[R'] 
⇒ R' => νR.F[R])))
Definition: as_strong
P as strong as Q  ==  ∀x:T. ((P x) 
⇒ (Q x))
Lemma: as_strong_wf
∀[T:Type]. ∀[Q,P:T ⟶ ℙ].  (P as strong as Q  ∈ ℙ)
Lemma: as_strong_transitivity
∀[T:Type]. ∀[P,Q,R:T ⟶ ℙ].  (P as strong as Q  
⇒ Q as strong as R  
⇒ P as strong as R )
Definition: prop_and
P ∧ Q ==  λL.((P L) ∧ (Q L))
Lemma: prop_and_wf
∀[T:Type]. ∀[P,Q:T ⟶ ℙ].  (P ∧ Q ∈ T ⟶ ℙ)
Lemma: and_preserved_by
∀[T:Type]. ∀[P,Q:T ⟶ ℙ]. ∀[R:T ⟶ T ⟶ ℙ].  (R preserves P 
⇒ R preserves Q 
⇒ R preserves P ∧ Q)
Definition: preserved_by2
(ternary) R preserves P  ==  ∀x,y,z:T.  ((P x) 
⇒ (P y) 
⇒ (R x y z) 
⇒ (P z))
Lemma: preserved_by2_wf
∀[T:Type]. ∀[P:T ⟶ ℙ]. ∀[R:T ⟶ T ⟶ T ⟶ ℙ].  ((ternary) R preserves P  ∈ ℙ)
Lemma: and_preserved_by2
∀[T:Type]. ∀[P,Q:T ⟶ ℙ]. ∀[R:T ⟶ T ⟶ T ⟶ ℙ].
  ((ternary) R preserves P  
⇒ (ternary) R preserves Q  
⇒ (ternary) R preserves P ∧ Q )
Definition: predicate_or
P1 ∨ P2 ==  λx.((P1 x) ∨ (P2 x))
Lemma: predicate_or_wf
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 ∨ P2 ∈ T ⟶ ℙ)
Definition: predicate_implies
P1 
⇒ P2 ==  ∀x:T. ((P1 x) 
⇒ (P2 x))
Lemma: predicate_implies_wf
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 
⇒ P2 ∈ ℙ)
Definition: predicate_rev_implies
P1 
⇐ P2 ==  P2 
⇒ P1
Lemma: predicate_rev_implies_wf
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 
⇐ P2 ∈ ℙ)
Definition: predicate_equivalent
P1 
⇐⇒ P2 ==  ∀x:T. (P1 x 
⇐⇒ P2 x)
Lemma: predicate_equivalent_wf
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 
⇐⇒ P2 ∈ ℙ)
Lemma: predicate_equivalent_implies
∀[T:Type]. ∀[P1,P2:T ⟶ Type].  (P1 
⇐⇒ P2 
⇐⇒ P1 
⇒ P2 ∧ P2 
⇒ P1)
Lemma: predicate_implies_weakening
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 
⇐⇒ P2 
⇒ P1 
⇒ P2)
Lemma: predicate_rev_implies_weakening
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 
⇐⇒ P2 
⇒ P1 
⇐ P2)
Lemma: predicate_equivalent_weakening
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  P1 
⇐⇒ P2 supposing P1 = P2 ∈ (T ⟶ ℙ)
Lemma: predicate_implies_reflexivity
∀[T:Type]. ∀[P:T ⟶ ℙ].  P 
⇒ P
Lemma: predicate_implies_transitivity
∀[T:Type]. ∀[P1,P2,P3:T ⟶ ℙ].  (P1 
⇒ P2 
⇒ P2 
⇒ P3 
⇒ P1 
⇒ P3)
Lemma: predicate_equivalent_transitivity
∀[T:Type]. ∀[P1,P2,P3:T ⟶ ℙ].  (P1 
⇐⇒ P2 
⇒ P2 
⇐⇒ P3 
⇒ P1 
⇐⇒ P3)
Lemma: predicate_equivalent_inversion
∀[T:Type]. ∀[P1,P2:T ⟶ ℙ].  (P1 
⇐⇒ P2 
⇒ P2 
⇐⇒ P1)
Lemma: predicate_or_idempotent
∀[T:Type]. ∀[P:T ⟶ ℙ].  P ∨ P 
⇐⇒ P
Definition: rel-restriction
R|P ==  λx,y. (((R x y) ∧ (P x)) ∧ (P y))
Lemma: rel-restriction_wf
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[P:T ⟶ ℙ].  (R|P ∈ T ⟶ T ⟶ ℙ)
Lemma: rel-restriction-implies
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[P:T ⟶ ℙ].  R|P => R
Lemma: restriction-of-transitive
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[P:T ⟶ ℙ].  (Trans(T;x,y.R x y) 
⇒ Trans(T;x,y.R|P x y))
Lemma: restriction-to-field
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ]. ∀[P:T ⟶ ℙ].  ((∀x,y:T.  ((R x y) 
⇒ ((P x) ∧ (P y)))) 
⇒ (∀x,y:T.  (R|P x y 
⇐⇒ R x y)))
Definition: subsequence
subsequence(a,b.E[a; b];m.x[m];n.y[n]) ==  ∃N:ℕ. ∀n:ℕ. ∃m:ℕ. ((n ≤ m) ∧ E[y[n]; x[m]]) supposing N ≤ n
Lemma: subsequence_wf
∀[T:Type]. ∀[E:T ⟶ T ⟶ ℙ]. ∀[x,y:ℕ ⟶ T].  (subsequence(a,b.E[a;b];n.x[n];n.y[n]) ∈ ℙ)
Home
Index