United Nations Security Council Resolution 1170

United Nations Security Council resolution 1170, adopted unanimously on 27 May 1998, after considering the situation across the African continent, the Council decided to establish an ad hoc Working Group to review the Secretary-General Kofi Annan's recommendations concerning the maintenance of international peace and security in Africa.[1]

UN Security Council
Resolution 1170
Africa
Date28 May 1998
Meeting no.3,886
CodeS/RES/1170 (Document)
SubjectThe situation in Africa
Voting summary
  • 15 voted for
  • None voted against
  • None abstained
ResultAdopted
Security Council composition
Permanent members
Non-permanent members

Observations

In the preamble of Resolution 1170, the Security Council supported the engagement of the United Nations in Africa through diplomatic, economic, humanitarian, peacekeeping and other activities, and reaffirmed the obligation of all Member States to settle disputes in a peaceful manner. It was mindful of the 1993 Cairo Declaration which stipulated that the Organisation of African Unity (OAU) would anticipate and prevent conflicts as a primary objective and the African Nuclear Weapons Free Zone Treaty which was an important contribution to regional peace and security.

The Council was concerned at the continuation of armed conflicts in Africa which had led to mass displacement, poverty, instability and suffering. There were destabilising effects of illegal arms transfers, armed militias and the use of mercenaries across the continent. It was noted that African countries had made progress towards economic reform and democratisation with respect for human rights. The Office for the Coordination of Humanitarian Affairs and the United Nations High Commissioner for Refugees were ready to assist in humanitarian and refugee crises in accordance with international law and international humanitarian law.

Acts

The Security Council welcomed the report of the Secretary-General on the situation in Africa, which detailed the sources of conflict on the continent and ways to address it. Kofi Annan had made recommendations concerning arms trafficking, sanctions, refugees, structural adjustment, development assistance and debt and trade.[2] He also emphasised the responsibility of African leaders in regional conflicts and economic failures, and the dangers of foreign intervention.[3] The resolution stressed that challenges in Africa demanded a comprehensive response and that all United Nations agencies, international organisations and all countries would consider the recommendations in the report.[4]

A Working Group consisting of all members of the Council was then established for a period of six months to review the recommendations in the report and consider ways of implementing them and submit proposals for consideration in September 1998 when a ministerial level meeting would be convened. The Council stressed the need for close co-operation between it and the OAU and commended the efforts of the OAU in conflict prevention. At the same time, contributions from Member States, regional organisations and United Nations agencies towards peacekeeping operations in Africa were welcomed.

gollark: I didn't do any horrible homoglyph hacks with THAT.
gollark: It uses the function, yes.
gollark: So, I finished that to highly dubious demand. I'd like to know how #11 and such work.
gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.

See also

References

  1. "Security Council establishes ad hoc Working Group to review Secretary-General's recommendations on maintenance of international peace and security in Africa". United Nations. 28 May 1998.
  2. Annan, Kofi (13 April 1998). "Report of the Secretary-General on the situation in Africa". United Nations.
  3. Crossette, Barbara (17 April 1998). "Stop blaming colonialism, U.N. chief tells Africa". The New York Times.
  4. Kreijen, Gérard (2002). State, sovereignty, and international governance. Oxford University Press. pp. 558–559. ISBN 978-0-19-924538-3.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.