I matematikken anvender vi ofte kvantifikatorer for at formulere udsagn om eksistens og universelle påstande. Den eksistenskvantifikator, der kan indtastes som \ex i VS Code, bruges til at repræsentere udtrykket "der findes" eller "der eksisterer." For eksempel betyder det formelle udtryk ∃ x : R, 2 < x ∧ x < 3 i Lean, at der findes et reelt tal mellem 2 og 3. I Lean kan vi udnytte kvantifikatoren til at konstruere beviser, som viser eksistensen af objekter med en given egenskab. Denne metode gør det muligt at argumentere præcist og systematisk for, hvorfor et givet udsagn holder.
En typisk måde at bevise et sådant udsagn på er ved at udstille et konkret objekt og vise, at det opfylder de givne betingelser. For eksempel kan tallet 2,5, som vi kan indtaste som 5 / 2 eller (5 : R) / 2 i Lean, nemt vise sig at opfylde betingelsen, og ved hjælp af taktikken norm_num kan vi automatisk bevise, at det møder beskrivelsen. I Lean kan vi opbygge sådanne beviser på forskellige måder afhængigt af den ønskede præsentation.
Når vi står overfor en eksistenskvantifikator, anvender vi ofte taktikken use for at angive den objekt, der opfylder betingelsen. Et eksempel på dette kan ses her:
I dette tilfælde anvender vi use til at præsentere objektet 5 / 2 som løsningen på vores mål. Vi beviser derefter, at dette tal opfylder betingelsen ved hjælp af norm_num, som automatisk forenkler og bekræfter, at 2 < 5 / 2 < 3. Hvis vi har flere beviser eller antagelser, kan vi også bruge flere taktikker og definitioner for at udvide vores argumentation.
En anden måde at konstruere et bevis for en eksistenskvantifikator på er ved at bruge Lean’s anonyme konstruktørnotation, som ikke kræver en separat taktik for at udtrække de nødvendige beviser. For eksempel kan vi oprette et bevis for udsagnet om eksistens som følger:
Denne notation samler både objektet og beviset for det pågældende udsagn på en mere kompakt og eksplicit måde. I Lean’s syntaks bliver vinkelformede parenteser, som kan indtastes som < og >, brugt til at indikere, at vi eksplicit konstruerer et bevis baseret på de givne data.
Når vi har beviser for eksistens, er det også vigtigt at kunne anvende disse beviser til at argumentere videre. Hvis vi ved, at der findes et objekt med en vis egenskab, skal vi kunne tildele dette objekt et vilkårligt navn og bruge det til at bevise videre udsagn. For eksempel kan vi bruge eksistenskvantifikatoren til at sige, at en funktion er begrænset uden at specificere den nøjagtige grænse:
Her introducerer vi definitioner for øvre og nedre grænser på en funktion, og vi udvider de tidligere beviser for at vise, hvordan en funktion, der har en øvre grænse, også vil have en øvre grænse, når der tilføjes en anden funktion. Ved at anvende teknikker som rcases, som bruges til at pakke ud information fra en eksistenskvantifikator, kan vi udtrække de relevante data fra vores antagelser og bruge dem til at bevise nye resultater.
Eksempelvis kan vi bruge rcases til at udtrække øvre grænseantagelser og derefter bruge dem til at bevise, at summen af to funktioner, der har øvre grænser, også har en øvre grænse:
Taktikken rcases bruges til at pakke ud antagelserne i ubf og ubg og tilføje de relevante data til konteksten. På denne måde får vi adgang til de oplysninger, der er nødvendige for at udlede den ønskede konklusion. Dette er en af de mest nyttige teknikker, når man arbejder med eksistensbeviser i Lean.
Det er også muligt at anvende andre metoder som obtain og match til at pakke ud data og skabe beviser. Selvom disse metoder tilbyder lidt forskellig syntaks, kan de alle bruges til at udpakke data og anvende disse til at skabe nye beviser i et matematisk argument. I sidste ende er den grundlæggende ide bag alle disse taktikker den samme: vi udpakker data og anvender dem på en systematisk og præcis måde.
I de næste kapitler vil vi fokusere på, hvordan vi kan bruge teknikker som rcases, rintro og obtain til at arbejde med eksistenskvantifikatorer på en effektiv og struktureret måde. Dette vil danne grundlaget for at forstå, hvordan vi kan bygge komplekse matematiske argumenter med Lean’s stærke bevisværktøjer.
Hvordan definere og evaluere propositonelle formler i Lean
Induktivt definerede typer udgør en central del af formelle beviser i matematik, og en af de mest fundamentale typer er propositonelle formler. I Lean, et formelt bevisværktøj, kan vi definere og manipulere disse formler på en præcis og struktureret måde, der gør det muligt at arbejde med matematik på et logisk niveau.
Propositonelle formler i Lean kan enten være en variabel (repræsenteret som var n), den konstante falskhed (repræsenteret som fls), eller en sammensat formel bestående af konjunktioner, disjunktioner eller implikationer. For eksempel kan en formel som A ∧ B defineres som conj A B, mens A → B defineres som impl A B. Disse definitioner svarer til de klassiske matematiske symboler, hvor ∧ står for konjunktion (og), ∨ for disjunktion (eller), og → for implikation.
Disse typer af formler kan være sammensatte, og Lean gør det muligt at definere andre logiske operatorer i form af de grundlæggende operationer. For eksempel kan negationen ¬A defineres som A → ⊥ (A implikerer falskhed), og den bi-implikative operator A ↔ B kan defineres som (A → B) ∧ (B → A).
Når man arbejder med propositonelle formler i Lean, er en vigtig funktion evnen til at evaluere formlerne i forhold til en tildeling af sandhedsværdier. Dette sker gennem en rekursiv funktion, som kalder på de forskellige komponenter i formlen. Den evaluerer variablerne ved at tildele dem deres respektive sandhedsværdier og bearbejder sammensatte formler ved hjælp af de grundlæggende logiske operationer. Dette er af stor betydning, da det gør det muligt at beregne sandhedsværdien af enhver propositonel formel, givet en tildeling af sandhedsværdier til dens variabler.
Der er også en vigtig funktion, som beregner mængden af variabler, der optræder i en given formel. Ved hjælp af denne funktion kan man f.eks. vise, at to tildelinger, der kun adskiller sig ved værdierne for ikke-tilstedeværende variabler i en formel, vil føre til den samme evaluering. Dette understøtter ideen om, at en formel kun er afhængig af de variabler, der faktisk forekommer i den.
En anden vigtig egenskab ved propositonelle formler er substitution. Det er muligt at erstatte en variabel med en anden formel. Dette kan bruges til at vise, hvordan formler kan transformeres uden at ændre deres fundamentale sandhedsegenskaber. For eksempel viser et teorem, at hvis en variabel ikke forekommer i en formel, vil en substitution af denne variabel ikke ændre formlens værdi.
Den rekursive natur af propositonelle formler gør det muligt at definere og evaluere formler på en struktureret og effektiv måde i Lean. Evalueringen af formler afhænger ikke kun af de variabler, der er tilstede, men også af hvordan sammensatte formler interagerer med hinanden. Substitution og evaluering er nøglefunktioner, der muliggør præcise matematiske manipulationer og beviser i systemet.
Udover de tekniske aspekter af definition og evaluering af propositonelle formler er det vigtigt at forstå, hvordan disse formler fungerer i praksis. For eksempel, når vi arbejder med sammensatte formler som implikationer eller konjunktioner, er det nødvendigt at forstå, hvordan de relaterer sig til hinanden. Det er ikke kun den syntaktiske struktur af formlen, der er vigtig, men også dens semantiske betydning – hvad betyder det, at A ∧ B er sandt, og hvordan adskiller det sig fra A ∨ B? Der er en dybere forståelse, der kræves, når man anvender disse logiske forbindelser i beviser, og Lean gør det muligt at arbejde med disse abstraktioner på et højt niveau af præcision.
I praksis kan denne type formeldefinering også anvendes i mere komplekse systemer, hvor vi har at gøre med algebraiske strukturer som grupper eller ringer. Forståelsen af logiske formler og deres evaluering i sådanne systemer er afgørende for at kunne bygge matematiske beviser på en systematisk og korrekt måde.
Hvordan arbejder man med algebraiske strukturer i Lean?
I matematikken betragtes en ring som en samling af objekter , med operationerne addition () og multiplikation (), samt de konstante elementer 0 og 1, og en operation, der giver den negative værdi for hvert element. En ring har flere grundlæggende egenskaber, som i Lean bliver formaliseret som aksioner:
-
med addition er en abelsk gruppe, hvor 0 er den additive identitet og negation fungerer som den inverse operation.
-
Multiplikation er associativ, har identitetselementet 1, og distribuerer over addition.
I Lean repræsenteres denne samling af objekter som en type, , og aksionerne, der definerer en ring, er præcist beskrevet som teoremer i Lean's matematikbibliotek, Mathlib. Teoremerne omfatter for eksempel:
-
(commutativitet for addition),
-
(associativitet for addition),
-
(distributiv lov for multiplikation over addition).
Lean tillader også, at vi arbejder med både konkrete matematiske strukturer som de naturlige tal eller de reelle tal, samt abstrakte strukturer defineret ved aksiomer, som f.eks. en ring. På denne måde kan man bevisa egenskaber om ringe generelt og anvende dem på specifikke tilfælde som de naturlige tal, de rationelle tal eller komplekse tal.
Et af de mest kraftfulde værktøjer i Lean til at arbejde med algebraiske identiteter er brugen af rewriting-teknikker. Her kan vi for eksempel bruge taktikken til at omdanne en given udtryk ved at erstatte et element med et andet. Dette kan bruges til at forenkle udtryk og bevise identiteter.
For eksempel, hvis vi ønsker at bevise identiteten
kan vi bruge en række teknikker i Lean til at opnå dette trin for trin. Først kan vi bruge den distributive lov og , som er en standardteorem i Lean, til at udvide produktet:
Derefter kan vi anvende og omarrangere termerne for at få en lettere form:
Til sidst, ved at bruge (multiplikationens kommutativitet) og (for at udtrykke korrekt), får vi den ønskede form:
I Lean kan vi skrive dette bevis som en sekvens af taktikker, hvilket giver os mulighed for at arbejde på en struktureret måde. Her er et eksempel:
Bemærk, at når vi bruger -syntaksen, får vi en meget mere læsbar og struktureret måde at arbejde med beviser på, som er lettere at forstå og følge end en simpel sekvens af -kommandoer. Hver linje i -udtrykket repræsenterer en ændring i udtrykket, og vi bruger for at angive den teoretiske begrundelse for hver ændring. Lean tillader også, at vi kan udfylde beviset med -kommandoen, indtil vi har en korrekt bevisstruktur. På den måde kan vi koncentrere os om at definere rammerne for vores bevis og derefter udfylde detaljerne.
En anden metode til at arbejde med algebraiske udtryk er at bruge den automatiserede taktik , som kan bevise algebraiske identiteter uden at kræve detaljeret udregning. For eksempel kan vi bevise identiteten
ved hjælp af -taktikken:
Denne taktik anvender de grundlæggende ringaksiomer til at omdanne og forenkle udtrykket uden at vi selv skal skrive ud alle de nødvendige manipulationer. Det er en fantastisk metode til at bevise resultater hurtigt i simple algebraiske strukturer.
Der findes også mere avancerede metoder til at håndtere tilfælde, hvor vi kun ønsker at erstatte en specifik forekomst af et udtryk i et bevis. For eksempel, ved at bruge , kan vi erstatte den anden forekomst af med et andet udtryk:
Disse teknikker gør det muligt at arbejde effektivt med algebraiske strukturer i Lean, og de giver os en robust platform til at bevise algebraiske identiteter både på konkrete og abstrakte niveauer.
I arbejdet med Lean og algebraiske strukturer er det vigtigt at forstå, at ikke alle egenskaber, som holder i konkrete strukturer som de reelle tal, nødvendigvis gælder i en vilkårlig ring. For eksempel er multiplikation i de reelle tal kommutativ, men dette er ikke nødvendigvis tilfældet i alle ringe. Derfor skal vi være opmærksomme på, hvilke aksioner og egenskaber der gælder for de strukturer, vi arbejder med.
Det er også værd at bemærke, at Lean understøtter en meget generel tilgang til bevisførelse, hvor vi kan arbejde med både konkrete og abstrakte strukturer uden at være begrænset til en bestemt type. Ved at forstå de grundlæggende aksioner og teoremer, som definerer en ring, kan vi udvide vores beviser til at omfatte meget mere komplekse algebraiske strukturer.
Hvordan kan essentielle olier hjælpe med at forfriske og lindre under rejser og sygdom?
Hvordan tilberedes traditionelle japanske nudelretter?
Hvordan Englands Sejladser og Krige Formede Den Britiske Empire i Det 17. Og 18. Århundrede

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