Quasigroups (유사군)

2022. 9. 23. 00:00CSharp/Functional Programming

반응형

추상대수학과 범주론에서 유사군은 왼쪽 나눗셈과 오른쪽 나눗셈을 정의할 수 있는 이항 연산을 갖춘 대수 구조이다.

군의 개념의 일반화이다. (위키백과)

https://en.wikipedia.org/wiki/Magma_(algebra)

 

https://blog.ploeh.dk/2017/10/05/monoids-semigroups-and-friends/

 

임이의 마그마에서  각 원소    에 대하여 다음을 만족하는 원소 p,q∈S 가 유일하게 존재하면 이것을 Quasigroups(유사군) 이라고 한다.

a∗p=b
q∗a=b

 

뺄셈은 Quasigroups 에 속한다. 

 

Inversion (반전)

public void SubtractionIsInvertible(int a, int b)
{
    var x = a - b;
    var y = a + b;
    Console.WriteLine(a - x == b);
    Console.WriteLine(y - a == b);
}

No Identity

뺄셈은 항등원이 없다.  3 - 0 과 0 - 3 은 다른 값이기 때문이다. 

그래서 뺄셈은 모노이드(Monoid)가 아니다

 

No associativity

마찬가지로 뺄셈은 연관 연산이 아니다.

 

(3-2)-1 은 0 이지만  

3-(2-1) 은 2 이기 때문이다. 

 

연산의 우선순위가 변하면 값이 변경되므로 이것은 semigroup 이 아니다. 

 

 

물론 덧셈도 Inversion 특성이 있다. 

public void AdditionIsInvertible(int a, int b)
{
    var x = b - a;
    var y = b - a;

    Console.WriteLine(a + x == b);
    Console.WriteLine(y + a == b);

    Console.WriteLine(x == y);
}

덧셈은 Monoid 이면서 Quasigroups 이기도 하다

 

이진 연산이 Associativity 하거나 Identity 가 있다고 해서 Quasigroups 이 안되는 것은 아니다.

 

관련영상

https://youtu.be/gnmjsvkPzBc

반응형

'CSharp > Functional Programming' 카테고리의 다른 글

Monoid  (0) 2022.09.22
Semigroup  (2) 2022.09.21
Magma  (2) 2022.09.20
순수 함수 (Pure Function)  (0) 2022.09.19
Expression, Method chaining with Extension methods  (0) 2022.09.16