I matematisk formalisme, især i Lean, er en af de grundlæggende udfordringer at håndtere implicitte kvantifikatorer og forstå begreber som "ordnede additiver kommutative monoid" og andre strukturer, der er nødvendige for at formulere og bevise sætninger på en effektiv måde. Et vigtigt resultat er, at sætninger som den, der vises i teoremet add_le_add, gælder for enhver struktur, der er et "ordnet additivt kommutativt monoid". Dette inkluderer heltals-, rational- og reelle tal, som er eksempler på sådan en struktur. Det betyder, at når vi beviser teoremet på et generelt niveau, gælder det for alle disse instanser, hvilket giver en meget bred anvendelighed af resultaterne.
I Lean er en sådan struktur, der kaldes AddCommMonoid R, defineret som en kommutativ monoid med en additiv operation. Når vi tilføjer en ordning på denne struktur, ved at bruge PartialOrder R, får vi en ordnet additiv monoid. Denne type definitioner gør det muligt at udtrykke meget generelle teoremer, som kan anvendes på flere typer af tal og strukturer, såsom de naturlige tal, de reelle tal og mange andre.
En af de vigtige ideer, som matematikere arbejder med i Lean, er at forstå, hvordan universelle kvantifikatorer (notationen ∀) bruges til at formulere matematiske påstande. For eksempel, teoremet fnUb_add beviser, at hvis vi har to funktioner f og g, som begge er begrænset over deres respektive øvre grænser a og b, så vil summen af disse funktioner også være begrænset af summen af a og b. Dette bevis er grundlæggende for mange analyser i matematisk teori, og det kan udvides til mange forskellige typer funktioner og strukturer. Det er ikke kun for reelle tal, men også for alle de strukturer, der opfylder kravene for at være ordnede additive monoid.
I praktisk brug vil Lean ofte bruge notationer som fun x 7→ ... for at definere funktioner, og dette giver mulighed for at arbejde med funktioner i en formel og struktureret måde. Denne notation hjælper med at udtrykke beviser og lemmer på en præcis måde, hvor implicitte variabler og kvantifikatorer nemt kan håndteres. For eksempel, når man arbejder med monotone funktioner, som kræver, at funktionen er ikke-faldende i dens argumenter, kan vi definere en funktion som monoton ved at angive en passende sætning og derefter bruge beviser som Monotone f for at udlede nye resultater.
Når man bevæger sig ind i mere komplekse strukturer, som f.eks. mængder og deres relationer, kan vi bruge Lean til at definere begreber som "undermængde" (Subset) og "øvre grænse" (SetUb). Disse begreber er essentielle for at formulere komplekse sætningers gyldighed i forhold til mængder og deres elementer. Mængderne kan have forskellige typer afhængigt af deres indhold, og Lean giver os en klar ramme til at udtrykke og manipulere disse forhold ved hjælp af kvantifikatorer som ∀ og ∃.
Et andet vigtigt begreb i matematikken er injektivitet, som definerer en funktion, der opfylder, at hvis f(x1) = f(x2), så må x1 = x2. Dette er en grundlæggende egenskab ved funktioner, og i Lean kan vi arbejde med at bevise, at funktioner som tilføjer en konstant eller multiplicerer med en konstant er injektive. Eksemplerne i Lean giver en praktisk måde at forstå, hvordan man arbejder med funktioner og deres egenskaber, og hvordan man kan bruge sætninger og beviser til at validere påstande om disse funktioner.
Værd at bemærke er, at Lean’s formalisme og struktur giver os muligheden for at arbejde med meget generelle teorier, som kan anvendes på mange matematiske områder. Det betyder, at mange af de teorier, vi udvikler i Lean, er universelle og kan anvendes på en bred vifte af matematiske objekter og strukturer. Det er en vigtig funktion, fordi det giver mulighed for at bygge abstrakte og generelle resultater, der kan anvendes på specifikke tilfælde.
I denne kontekst er det også nødvendigt at forstå, at de matematiske strukturer i Lean er defineret med en høj grad af præcision. For eksempel, når vi taler om funktioner, der er monotone, eller mængder, der er ordnede, er det ikke kun nok at definere disse egenskaber på et intuitivt niveau, men vi er nødt til at give præcise definitioner, der kan bruges til at opbygge formelle beviser. Dette gør Lean til et effektivt værktøj til at arbejde med kompleks matematik og til at formulere og validere matematiske teorier på et højt abstraktionsniveau.
Det er også vigtigt at forstå, hvordan notationer og beviser i Lean hjælper med at præcisere matematiske ideer og gøre dem anvendelige i flere sammenhænge. Ved at forstå og anvende de specifikke definitioner og teknikker, der er introduceret i Lean, kan man bygge en dybere forståelse af matematik og dens strukturer.
Hvad er Monoid, Gruppe og deres Relationer i Matematik?
Når man arbejder med matematik på papir, kan det ofte være nyttigt at efterlade beviser som øvelser. En mindre effektiv, men sikrere og mere formaliseringsvenlig måde at arbejde på er at anvende monoid-strukturer. En monoid-struktur på en type M er en intern sammensætningslov, der er associativ og har et neutralt element. Monoider bruges primært til at rumme både grupper og den multiplicative struktur af ringer. Men der er også flere naturlige eksempler. For eksempel danner mængden af naturlige tal udstyret med addition en monoid.
Fra et praktisk synspunkt kan man stort set ignorere monoider, når man arbejder med Mathlib. Dog er det vigtigt at være opmærksom på deres eksistens, når man søger efter lemmer i Mathlib-filer. Ellers risikerer man at lede efter en sætning i gruppe-teori-filer, mens den faktisk findes under monoider, da den ikke kræver, at elementerne er inverterbare. Typen af monoid-strukturer på en type M skrives Monoid M. Funktionen Monoid er en typeklasse, så den vil næsten altid optræde som en implicit instans-argument (med andre ord, i firkantede parenteser).
Som standard anvender Monoid multiplicativ notation for operationen; for additive notation bruges AddMonoid i stedet. De kommutative versioner af disse strukturer tilføjer præfikset Comm før Monoid.
En vigtig bemærkning er, at selvom AddMonoid findes i biblioteket, kan det være forvirrende at bruge additiv notation med en ikke-kommutativ operation. Mængden af morfiermer mellem monoiderne M og N kaldes MonoidHom M N og skrives M →* N. Lean vil automatisk opfatte en sådan morfisme som en funktion fra M til N, når den anvendes på elementer i M. Den additive version kaldes AddMonoidHom og skrives M →+ N.
Gruppemorfismer er simpelthen monoidmorfismer mellem grupper. Dette betyder, at vi kan bruge de samme eksempler som tidligere, blot ved at erstatte Monoid med Group. Det er dog vigtigt at bemærke, at vi får nye egenskaber, som f.eks. denne: hvis vi har en funktion f : G →* H, der er kompatibel med kompositionslovene, kan vi nemt bygge en gruppemorfisme fra denne funktion.
Gruppemorfismer kræver ikke nødvendigvis meget ekstra arbejde, da definitionen af monoidmorfisme sikrer, at neutrale elementer bliver sendt til neutrale elementer. Der findes dog en funktion, der bygger en gruppemorfisme fra en funktion mellem grupper, som er kompatibel med kompositionslovene.
En isomorfisme mellem grupper (eller monoider) kaldes en MulEquiv, og den skrives med '*' for grupper og '+' for additive grupper. For at få den inverse funktion af en isomorfisme f : G * H, bruger vi MulEquiv.symm f : H * G. Sammensætning af f og g sker med MulEquiv.trans f g. Identitetsisomorfismen af G er MulEquiv.refl G.
En vigtig funktion ved at have en type Subgroup G i stedet for en predikat IsSubgroup : Set G → Prop er, at vi let kan udstyre Subgroup G med yderligere struktur. Subgroup G har f.eks. strukturen af et komplet latticesystem med hensyn til inklusion. I stedet for at have et lemma, der siger, at en intersection af to undergrupper i G igen er en undergruppe, har vi brugt lattice-operationen ⊓ til at konstruere intersectionen. Dette giver os mulighed for at anvende vilkårlige lemmaer om lattices på konstruktionen.
For at opsummere er det vigtigt at forstå, at en monoid er en sammensætningsstruktur med en neutral element og en associativ operation, mens en gruppe er en monoid med den ekstra egenskab, at hvert element har et invers. Forståelsen af disse grundlæggende begreber er essentiel, når man navigerer i de mere komplekse strukturer som grupper, undergrupper og morfiermer, som defineres og håndteres i systemer som Lean.
Hvordan komponenter fungerer i React: En dybdegående forståelse af props, default værdier og state management
Hvilke aktiviteter giver dig størst afkast af din tid?
Hvordan oprettes og administreres genveje og widgets på Android-startskærmen?
Hvordan Google-søgning og Web 3.0 vil ændre den måde, vi navigerer på internettet

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский