I formelle matematiksystemer som Lean kan induktion og rekursion bruges til at bevise en lang række matematiske identiteter og egenskaber, som i den klassiske matematik normalt behandles med algebraiske metoder eller kendskab til specifikke formler. Når vi arbejder med naturlige tal og deres operationer, såsom addition og multiplikation, er induktion et særligt nyttigt værktøj. Det gør det muligt at bevise udsagn, der gælder for alle naturlige tal, ved først at vise, at de gælder for et basistrin og derefter at vise, at hvis de gælder for et vilkårligt naturligt tal, så gælder de også for det næste tal.
Et af de første eksempler på induktion i dette sammenhæng er udregningen af fakultetsfunktionen, som kan udtrykkes som et produkt af alle de naturlige tal fra 1 til n. I Lean defineres fakultetsfunktionen som et produkt, og den kan bevises ved induktion, hvor den første identitet i hver par holdes definitionelt, hvilket betyder, at man kan erstatte beviset med rfl (refleksiv lighed).
For eksempel, når man beviser, at summen af de naturlige tal op til og med n er givet ved formlen , er det nyttigt at rydde nævneren i første trin. Dette er ofte nødvendigt, når man formaliserer identiteter, fordi beregninger med division generelt har bivilkår, som kan gøre beviset mere komplekst. Denne metode hjælper med at reducere risikoen for fejl og gør beviset lettere at følge.
Et andet eksempel på en anvendelse af rekursion og induktion kan ses i den bekræftelse, at der findes uendeligt mange primtal. Denne berømte sætning kan formuleres som, at for hvert naturligt tal n, findes der et primtal, der er større end n. For at bevise dette kan man vælge et primtal, der er en faktor af . Hvis dette primtal er mindre end eller lig med n, vil det dele , og dermed også , som leder til en modstrid, da det ikke kan dele 1. Dette beviser, at primtallet må være større end n.
Ved at bruge metoder som stærk induktion og formalisering af små trivielle udsagn kan vi komme langt med at etablere grundlæggende matematiske resultater. Et særligt element af formaliseringen er, at nogle tilsyneladende enkle udsagn, såsom at et naturligt tal er større end eller lig med 2, kan være vanskelige at formulere korrekt i et formelt system som Lean. Her er det ofte nødvendigt at opdele problemet i flere tilfælde eller bruge beslutningsprocedurer for at sikre, at alle mulige scenarier bliver dækket.
At bevise egenskaber som kommutativitet og associativitet for addition og multiplikation er også fundamentalt for en solid forståelse af naturlige tal. I Lean defineres både addition og multiplikation rekursivt, og deres fundamentale egenskaber etableres med induktion. Når man arbejder med rekursive funktioner, er det generelt en fordel at vælge den rette variable til induktion, som er den, der optræder i den rekursive definition. Dette gør beviset mere intuitivt og undgår, at man går i cirkler eller laver fejl.
Der er dog også kompleksiteter, som skal tages i betragtning, især når man arbejder med operationer som subtraktion og potens, der ofte kræver mere avancerede teknikker for at sikre, at de er korrekt defineret og anvendt i beviser. At forstå hvordan disse operationer kan formaliseres og bevises, giver dybere indsigt i hvordan matematik kan forstås gennem formelle systemer som Lean.
Vigtigt er også forståelsen af, at formaliserede beviser kræver præcise definitioner og en streng tilgang til at opbygge argumenter trin for trin. I formelle systemer som Lean er det ikke nok at stole på intuition eller generelle regler; hvert skridt skal være velbegrundet, og systemet kræver, at man følger en strengt logisk rækkefølge for at sikre, at beviset er korrekt og fuldstændigt.
Hvordan forstå subobjekter i algebraiske strukturer og deres anvendelse i matematik i Lean
I algebraiske strukturer som monoid, gruppe og ring, spiller subobjekter en central rolle. Subobjekter kan betragtes som delmængder af disse strukturer, der bevarer de nødvendige algebraiske operationer, som f.eks. multiplikation eller addition. I Lean, et system for formel bevisførelse, er subobjekter i høj grad struktureret og kan defineres og anvendes effektivt via klassesystemer og coercions.
Submonoid er et eksempel på et subobjekt, som kan ses som en undergruppe af en monoid. Et submonoid er en delmængde af et monoid, som er lukket under den givne operation (typisk multiplikation) og indeholder en enhedselement. I Lean defineres submonoid som en struktur, der indeholder et carrier-sæt og de nødvendige beviser for, at produktet af to elementer fra sættet stadig tilhører sættet, samt at enhedselementet tilhører sættet. Når man arbejder med submonoid i Lean, kan man udnytte de eksisterende matematiske strukturer i systemet som f.eks. SetLike-klassen, som gør det muligt at behandle submonoid som en delmængde af et monoid og samtidig anvende coercions for at konvertere mellem typerne.
En submonoid kan også være udstyret med en monoidstruktur, hvilket betyder, at man kan anvende de grundlæggende operationer som multiplikation og enhedselement i submonoidet. I Lean håndteres dette ved hjælp af coercions, der tillader at elementer i submonoidet bliver betragtet som elementer i monoidet, hvilket gør det muligt at anvende de operationer, der defineres på monoidet. Eksemplerne, der anvendes til at illustrere dette, viser, hvordan man kan arbejde med submonoiders egenskaber uden eksplicit at referere til deres carrier-sæt, hvilket gør koden mere elegant og mindre redundant.
Derudover er det vigtigt at bemærke, at subobjekter i matematik generelt danner et komplementært lattice. Dette betyder, at man kan anvende begreber som infimum og supremum på subobjekter. For eksempel, når man arbejder med snit eller forening af submonoid, bruges infimum (⊓) til at angive snittet af to submonoid. Denne notation er ikke kun en konsekvens af den matematiske struktur, men også en konsekvent og klar måde at formulere operationerne på, især når man sammenligner med andre algebraiske strukturer som vektorrum, hvor unionen af to underliggende vektorrum ikke nødvendigvis er et vektorrum.
I sammenhæng med subobjekter skal man også forstå begrebet kvotienter. Kvotienter af algebraiske strukturer kan defineres ved hjælp af en Setoid-struktur, som giver mulighed for at definere ækvivalensrelationer mellem elementer i monoidet. Kvotienten af en commutativ monoid med hensyn til en submonoid kan defineres som et kvotientmonoid, som igen udnytter coercions og ækvivalensrelationer for at sikre, at operationerne på kvotienten fungerer korrekt. Dette gør det muligt at arbejde med quotients på en elegant og struktureret måde uden at skulle håndtere direkte division eller komplekse algebraiske operationer.
I Mathlib, som er et omfattende bibliotek til formelle matematiske beviser i Lean, bliver sådanne konstruktioner anvendt flittigt. Forståelsen af submonoid og deres anvendelse i kvotienter er vigtig for at kunne anvende Mathlib effektivt. Når man ser på de indbyggede klasser som SubmonoidClass1 og HasQuotient, ser man et klart eksempel på, hvordan generalisering og abstrahering af algebraiske strukturer kan føre til både kortere og mere generel kode. Lean gør det muligt at definere og arbejde med disse abstraktioner på en måde, der sparer både tid og ressourcer, samtidig med at den matematiske præcision bevares.
Endvidere er det ikke kun submonoid, der drager fordel af denne strukturering. Begreber som subgruppe og subring følger samme principper, og man kan udvide de eksisterende klasser og definere nye strukturer, som passer til specifikke behov. Dette giver en stor fleksibilitet i arbejdet med algebraiske objekter og deres relationer.
Der er en naturlig overgang fra arbejdet med submonoid til mere komplekse algebraiske strukturer som grupper og ringer, hvor man fortsætter med at udnytte de samme teknikker. Derfor er det også nødvendigt at have en solid forståelse af, hvordan subobjekter fungerer, og hvordan de kan anvendes i større kontekster af algebraiske beviser.
Hvordan forstå surjektiviteten i den kinesiske restteorem og algebraer i polynomier?
Vi er nu klar til at dykke ned i den centrale del af teoremet, som viser surjektiviteten af vores chineseMap. Først er det nødvendigt at forstå de forskellige måder, hvorpå man kan udtrykke betingelsen om at være coprime (også kaldet co-maximalitet). Kun de første to vil være nødvendige i det følgende.
For at forklare dette, benytter vi induktion på Finset, som er en mængde, der kan indeholde en begrænset mængde indekser. I matematikken bruger vi nogle vigtige lemmer om Finset, som gør det muligt at manipulere med mængderne. Vigtigt at bemærke er, at ringen-operatoren fungerer både for semiringe og for ideellerne i en ring, hvilket betyder, at vi kan udnytte den samme struktur i både ringe og semiringe. For at fortsætte med vores diskussion, lad os bruge et resultat om Finset, som vil hjælpe med at bygge en stærkere forståelse af forholdet mellem ideellerne.
Når vi taler om surjektivitet i den kinesiske restteorem, starter vi med at bekræfte, at chineseMap faktisk er surjektiv. En vigtig del af beviset er at vise, at der for hver element i målrummet findes et element i domænet, der sender det til dette punkt. Dette kræver, at vi kan udtrykke visse elementer i form af restklasser i relation til flere ideeller. Ved at bruge den generelle struktur og lemmerne om idealer og coprime-forholdet, kan vi bekræfte surjektiviteten.
I Lean-programmeringssprog kan vi definere dette ved at bruge Ideal.Quotient.mk_surjective og derefter vise, at for hver indeks, som er et element af mængden ι, der findes et element e, sådan at det opfylder betingelserne for at være en restklasse. Dette gør det muligt at bygge surjektiviteten af chineseMap op, hvor alle ideeller på en eller anden måde kombineres via restklasser.
Når vi dykker ned i polynomialgebras og algebraer i Lean, ser vi på, hvordan man arbejder med kommutative semiringer og algebraer. En algebra over en ring R er en semiring A udstyret med en ringmorfisme, hvor billedet af morfisimen kommuterer med hvert element af A. Denne struktur giver os et værktøj til at operere med skalarmultiplikationer og bygger fundamentet for mange algebraiske strukturer.
Polynomier spiller en særlig rolle, især når vi ser på strukturer som Polynomial R, der repræsenterer et algebraisk objekt, som består af polynomier med koefficienter fra en kommutativ ring. I Lean kan vi nemt definere og arbejde med polynomier ved at bruge Polynomial.eval, som tillader os at evaluere et polynomium på et element af ringen. Eksemplerne, der involverer polynomier, hjælper med at gøre det klart, hvordan man manipulerer med algebraer og polynomier, og hvordan disse begreber understøtter ideerne bag algebraiske strukturer.
Det er vigtigt at forstå, at i arbejdet med algebraer og polynomier, kræves det en præcis forståelse af de algebraiske strukturer og deres interaktioner. For eksempel kræver det, at man er opmærksom på, hvordan polynomiers grader og deres rødder opfører sig, især i forhold til det, man kalder nulpolynomier. Man skal kunne differentiere mellem de forskellige måder, hvorpå polynomiers grad og rødder kan behandles under forskellige omstændigheder.
Når det gælder den kinesiske restteorem og dens anvendelser i algebra, er det centralt at forstå, hvordan surjektiviteten og injektiviteten spiller sammen. Det er ikke kun et spørgsmål om at finde løsninger på de algebraiske ligninger, men også at forstå de underliggende strukturer og hvordan de interagerer på tværs af forskellige algebraiske systemer. Det er denne forståelse, der gør det muligt at anvende den kinesiske restteorem effektivt i mange områder af matematisk teori og anvendelse.
Hvordan Beviser Man Fakta om Algebraiske Strukturer i Lean?
I matematik og algebra arbejder vi ofte med abstrakte strukturer, der udvider de grundlæggende operationer som addition, multiplikation, og ordensrelationer. I Lean, et bevisassistentværktøj, kan vi udtrykke og bekræfte egenskaber ved disse strukturer ved hjælp af axiomatiske definitioner og beviser. I denne sektion vil vi fokusere på, hvordan vi kan anvende Lean til at arbejde med de fundamentale operationer som største fælles divisor (gcd), mindste fælles multiplum (lcm), samt begreber som ordensrelationer og latticer.
Indenfor divisibilitet anvender vi begreber som største fælles divisor (gcd) og mindste fælles multiplum (lcm). På samme måde som funktionerne min og max i et ordnet sæt, er gcd og lcm fundet ud fra en relation mellem tal, nemlig divisibilitet. Et centralt begreb er, at enhver tal dividerer 0, hvilket gør 0 til det største element i relation til divisibilitet. I Lean kan vi nemt udtrykke disse relationer, f.eks. med udtrykket Nat.gcd_zero_right n, som viser, at gcd af et naturligt tal og 0 er det naturlige tal selv. På samme måde kan vi bruge Nat.lcm_zero_right n til at udtrykke, at lcm af et tal og 0 altid er 0.
Når man arbejder med algebraiske strukturer som kommutative ringer eller ordnede mængder, opdager man, at de matematiske love, der gælder for de reelle tal, også gælder i bredere kontekster. For eksempel kan en delmængde af en mængde udstyres med en binær relation, der er refleksiv, transitiv og antisymmetrisk, og dette danner grundlaget for en partiell orden. Lean understøtter disse begreber, og i praksis kan vi udtrykke relationer som x ≤ y, hvilket betyder, at x er mindre end eller lig med y, og derefter anvende regler som le_refl (refleksivitet) og le_trans (transitivitet) for at bygge videre på beviser.
Derudover er det vigtigt at forstå konceptet med latticer. En lattice udvider en partiell orden ved at inkludere operationer som infimum (⊓) og supremum (⊔), der svarer til henholdsvis min og max for reelle tal. For eksempel, i en lattice af naturlige tal, svarer gcd til infimum og lcm til supremum. Når vi arbejder med latticer, er det nyttigt at vide, at ⊓ og ⊔ også kaldes henholdsvis mødet (meet) og foreningen (join). Derfor kan man udtrykke begreber som største nedre grænse (infimum) og mindste øvre grænse (supremum), som i tilfældet med gcd og lcm.
En vigtig egenskab ved latticer er deres distributivitet. For latticer, der opfylder distributive love som x ⊓ (y ⊔ z) = (x ⊓ y) ⊔ (x ⊓ z), taler vi om distributive latticer. Disse latticer kan beskrives i Lean med teorier som inf_sup_left og sup_inf_right. Det er interessant at bemærke, at ikke alle latticer er distributive. Et eksempel på en ikke-distributiv lattice kan findes blandt endelige latticer. Lean kan bruges til at bevise, at de distributive love er indbyrdes afhængige, og at et hvilket som helst af dem fører til det andet, hvilket gør det muligt at udvide vores forståelse af latticer.
Udover disse grundlæggende begreber er der også sammensatte algebraiske strukturer, der involverer både ordensrelationer og algebraiske operationer. Et eksempel på dette er et strikt ordnet ring, som kombinerer egenskaberne ved både en ring og en partiell orden. I Lean kan vi definere et strikt ordnet ring og arbejde med egenskaber som additiv og multiplikativ ordenskompatibilitet. For eksempel kan vi bevise, at hvis 0 < a og 0 < b, så er produktet a * b også større end 0, hvilket er en vigtig egenskab i mange algebraiske strukturer.
Der er også avancerede beviser, som kan udledes ud fra de axiomatiske strukturer. Et klassisk eksempel er brugen af absorptionsteoremer i latticer, som siger, at x ⊓ (x ⊔ y) = x og x ⊔ (x ⊓ y) = x. Disse lovgivninger kan bevises i Lean ved hjælp af teoremene inf_sup_self og sup_inf_self, som findes i Mathlib. Et andet interessant område er beviset af distributivitet i latticer, hvor man bruger egenskaberne som inf_sup_left og sup_inf_right til at formulere og bevise de distributive love.
I det næste kapitel vil vi udvide vores forståelse af algebraiske strukturer og deres relationer ved at udforske teorier om strenge ordnede ringe og deres kompatibilitet med algebraiske operationer. Vi vil lære, hvordan disse strukturer er fundamentet for mere avancerede matematiske beviser i Lean.

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