# Logic

Published articles for Logic.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Solving a Double-Sided Wooden Puzzle with Coordinate Systems and Search Pruning

DevFeed: [Solving a Double-Sided Wooden Puzzle with Coordinate Systems and Search Pruning](<https://devfeed.tech/articles/how-wooden-puzzles-can-destroy-dev-teams-27374.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/evil-puzzle.htm>)

Author: Khan Academy

Published: 2015-07-06T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [dev](<https://devfeed.tech/tags/dev.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [logic](<https://devfeed.tech/tags/logic.md>), [news](<https://devfeed.tech/tags/news.md>), [program](<https://devfeed.tech/tags/program.md>), [puzzle](<https://devfeed.tech/tags/puzzle.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

John Sullivan describes how five Khan Academy developers wrote solvers for a double-sided wooden puzzle. The article covers representing piece positions, handling rotations and reflections, and pruning the search space to improve placement search.

### Source excerpt

By John Sullivan Last week a mysterious double-sided puzzle appeared at Khan Academy. To solve the puzzle you ... Read more

## The Philosophy of Machine Learning, or: What Comes After Hegel?

DevFeed: [The Philosophy of Machine Learning, or: What Comes After Hegel?](<https://devfeed.tech/articles/the-philosophy-of-machine-learning-or-what-comes-after-hegel-40130.md>)

Original publisher: [Read original article](<https://korbonits.com/blog/2026-04-09-the-philosophy-of-machine-learning-or-what-comes-after-hegel/>)

Published: 2026-04-09T00:00:00Z

Content type: opinion

Language: en

Sources: [Alex Korbonits](<https://devfeed.tech/sources/alex-korbonits.md>)

Topics: [Automated reasoning](<https://devfeed.tech/topics/automated-reasoning.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [LLMs](<https://devfeed.tech/topics/llms.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [automated-reasoning](<https://devfeed.tech/tags/automated-reasoning.md>), [conditional-probability](<https://devfeed.tech/tags/conditional-probability.md>), [llms](<https://devfeed.tech/tags/llms.md>), [logic](<https://devfeed.tech/tags/logic.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [reasoning](<https://devfeed.tech/tags/reasoning.md>)

### AI overview

This opinion essay compares large language models with Kant's distinction between a priori structures and a posteriori experience. It argues that LLMs learn patterns from human text but lack reliable logical scaffolding, and presents automated reasoning systems such as SMT solvers and theorem provers as a possible complement.

### Source excerpt

A notebook entry that maps AI paradigms onto the history of Western philosophy -- from scholasticism to Hegel -- and asks what comes next when the current moment exhausts itself.

## Whodunit: LLM Murder Mysteries

DevFeed: [Whodunit: LLM Murder Mysteries](<https://devfeed.tech/articles/whodunit-llm-murder-mysteries-37524.md>)

Original publisher: [Read original article](<https://blog.apartment304.com/whodunit-llm-murder-mysteries/>)

Author: James Heller

Published: 2025-08-26T07:00:00Z

Content type: article

Language: en

Sources: [Apartment 304](<https://devfeed.tech/sources/apartment-304.md>)

Topics: [LLM Techniques](<https://devfeed.tech/topics/llm-techniques.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>)

Tags: [ai-authored](<https://devfeed.tech/tags/ai-authored.md>), [apartment-304](<https://devfeed.tech/tags/apartment-304.md>), [custom-software-solutions](<https://devfeed.tech/tags/custom-software-solutions.md>), [devops](<https://devfeed.tech/tags/devops.md>), [devops-engineer](<https://devfeed.tech/tags/devops-engineer.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [language-models](<https://devfeed.tech/tags/language-models.md>), [large-language-models](<https://devfeed.tech/tags/large-language-models.md>), [llm](<https://devfeed.tech/tags/llm.md>), [logic](<https://devfeed.tech/tags/logic.md>), [models](<https://devfeed.tech/tags/models.md>), [puzzle](<https://devfeed.tech/tags/puzzle.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [software-engineer](<https://devfeed.tech/tags/software-engineer.md>), [strategies](<https://devfeed.tech/tags/strategies.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

This article describes building Whodunit, a low-tech murder-mystery game whose mysteries are written with large language models. It discusses developing a mental model for calling LLMs, testing LLM services and Go libraries, improving logical soundness through trial and error, and managing unreliable LLM APIs.

### Source excerpt

Can Large Language Models write engaging mysteries? Find out in this week's episode of "Whodunit?"

## Uncertain⟨T⟩

DevFeed: [Uncertain⟨T⟩](<https://devfeed.tech/articles/uncertain-t-29004.md>)

Original publisher: [Read original article](<https://nshipster.com/uncertainty/>)

Author: Mattt (mattt@nshipster.com)

Published: 2025-07-25T07:00:00Z

Content type: article

Language: en

Sources: [NSHipster](<https://devfeed.tech/sources/nshipster.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [code](<https://devfeed.tech/tags/code.md>), [graph](<https://devfeed.tech/tags/graph.md>), [logic](<https://devfeed.tech/tags/logic.md>), [miscellaneous](<https://devfeed.tech/tags/miscellaneous.md>), [models](<https://devfeed.tech/tags/models.md>), [programming](<https://devfeed.tech/tags/programming.md>), [research](<https://devfeed.tech/tags/research.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This article explains how software can represent uncertainty instead of forcing noisy data into Boolean logic. It discusses the Uncertain type, probabilistic programming, computation graphs, and Sequential Probability Ratio Testing, including a Swift port of concepts originally implemented in C#.

### Source excerpt

GPS coordinates aren't exact. Sensor readings have noise. User behavior is probabilistic. Yet we write code that pretends uncertainty doesn't exist, forcing messy real-world data through clean Boolean logic.

## Implementing Multiplatform Kotlin Mobile

DevFeed: [Implementing Multiplatform Kotlin Mobile](<https://devfeed.tech/articles/implementing-multiplatform-kotlin-mobile-39207.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-kmp-kmm>)

Published: 2023-09-25T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Development](<https://devfeed.tech/topics/development.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [logic](<https://devfeed.tech/tags/logic.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [text-to-speech](<https://devfeed.tech/tags/text-to-speech.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains how Kotlin Multiplatform Mobile can share business logic between Android and iOS applications. It covers shared modules, generated platform libraries, ViewModel expect/actual classes, coroutine scopes, and interfaces for platform-specific dependencies such as text-to-speech.

### Source excerpt

How in Kotlin we can implement Android and iOS projects with shared logic.

## The names of birds, part 4

DevFeed: [The names of birds, part 4](<https://devfeed.tech/articles/the-names-of-birds-part-4-38664.md>)

Original publisher: [Read original article](<https://ericlippert.com/2023/02/03/the-names-of-birds-part-4/>)

Author: ericlippert

Published: 2023-02-03T17:17:57Z

Content type: article

Language: en

Sources: [Eric Lippert](<https://devfeed.tech/sources/eric-lippert.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [function](<https://devfeed.tech/topics/function.md>), [functions](<https://devfeed.tech/topics/functions.md>)

Tags: [computer](<https://devfeed.tech/tags/computer.md>), [lambda-calculus](<https://devfeed.tech/tags/lambda-calculus.md>), [logic](<https://devfeed.tech/tags/logic.md>), [turing-machine](<https://devfeed.tech/tags/turing-machine.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This article explains combinatory logic through the fictional identities of birds representing the S and K combinators. It shows how these combinators can produce the identity combinator and the duplication combinator, then connects combinatory logic with lambda calculus and computation.

### Source excerpt

The European starling is a lovely looking bird, though territorial, noisy and aggressive up close. Unfortunately, they are very invasive in North America. Most of the hundreds of millions of European starlings now living in the Americas can be found ... Continue reading ->

## The names of birds, part 3

DevFeed: [The names of birds, part 3](<https://devfeed.tech/articles/the-names-of-birds-part-3-38663.md>)

Original publisher: [Read original article](<https://ericlippert.com/2023/02/01/the-names-of-birds-part-3/>)

Author: ericlippert

Published: 2023-02-01T17:01:15Z

Content type: article

Language: en

Sources: [Eric Lippert](<https://devfeed.tech/sources/eric-lippert.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [.env](<https://devfeed.tech/topics/dotenv.md>)

Tags: [logic](<https://devfeed.tech/tags/logic.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This installment uses a self-referential kestrel in combinatory logic to explore the consequences of the identity Kxy=x. It argues that if the kestrel is fond of itself, then it is fixated on itself and the forest contains only that one bird, making it lonely.

### Source excerpt

In the autumn of last year my friend Joan and I went on a little trip up to the Skagit valley north of Seattle to photograph birds of prey; I managed to get a blurry but recognizable shot of this ... Continue reading ->

## The Verse Calculus: a Core Calculus for Functional Logic Programming

DevFeed: [The Verse Calculus: a Core Calculus for Functional Logic Programming](<https://devfeed.tech/articles/the-verse-calculus-a-core-calculus-for-functional-logic-programming-29489.md>)

Original publisher: [Read original article](<http://lambda-the-ultimate.org/node/5662>)

Published: 2022-12-12T16:23:17Z

Content type: article

Language: en

Sources: [Lambda the Ultimate](<https://devfeed.tech/sources/lambda-the-ultimate.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [draft](<https://devfeed.tech/tags/draft.md>), [functional](<https://devfeed.tech/tags/functional.md>), [lambda-calculus](<https://devfeed.tech/tags/lambda-calculus.md>), [languages](<https://devfeed.tech/tags/languages.md>), [logic](<https://devfeed.tech/tags/logic.md>), [paper](<https://devfeed.tech/tags/paper.md>), [programming](<https://devfeed.tech/tags/programming.md>), [rewrite](<https://devfeed.tech/tags/rewrite.md>), [semantics](<https://devfeed.tech/tags/semantics.md>)

### AI overview

The draft paper introduces the Verse calculus (VC), a core calculus for functional logic programming. Its main contribution is a small-step rewrite semantics that enables reasoning about VC programs through successive rewrites, as with lambda calculus. The authors note that the design is still a work in progress and that the current rewrite rules may not be confluent.

### Source excerpt

The Verse Calculus: a Core Calculus for Functional Logic Programming https://simon.peytonjones.org/assets/pdfs/verse-conf.pdf LENNART AUGUSTSSON, Epic Games, Sweden JOACHIM BREITNER KOEN CLAESSEN, Epic Games, Sweden RANJIT JHALA, Epic Games, USA SIMON PEYTON JONES, Epic Games, United Kingdom OLIN SHIVERS, Epic Games, USA/li> TIM SWEENEY, Epic Games, USA Functional logic languages have a rich literature, but it is tricky to give them a satisfying semantics. In this paper we describe the Verse calculus, VC, a new core calculus for functional logical programming. Our main contribution is to equip VC with a small-step rewrite semantics, so that we can reason about a VC program in the same way as one does with lambda calculus; that is, by applying successive rewrites to it. This draft paper describes our current thinking about Verse. It is very much a work in progress, not a finished product. The broad outlines of the design are stable. However, the details of the rewrite rules may well change; we think that the current rules are not confluent, in tiresome ways. (If you are knowledgeable about confluence proofs, please talk to us!)We are eager to enagage in a dialogue with the community. Please do write to us.

## A Condition is a Field

DevFeed: [A Condition is a Field](<https://devfeed.tech/articles/a-condition-is-a-field-28929.md>)

Original publisher: [Read original article](<https://blog.jooq.org/a-condition-is-a-field/>)

Author: lukaseder

Published: 2022-08-24T09:09:11Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [boolean](<https://devfeed.tech/tags/boolean.md>), [boolean-type](<https://devfeed.tech/tags/boolean-type.md>), [condition](<https://devfeed.tech/tags/condition.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-17](<https://devfeed.tech/tags/jooq-3-17.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [logic](<https://devfeed.tech/tags/logic.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [predicate](<https://devfeed.tech/tags/predicate.md>), [sql](<https://devfeed.tech/tags/sql.md>), [three-valued-logic](<https://devfeed.tech/tags/three-valued-logic.md>)

### AI overview

The article explains that, starting with jOOQ 3.17, the Condition type extends Field<Boolean>, allowing conditions to be projected directly and used wherever boolean value expressions are accepted. It describes compatibility differences between PostgreSQL and Oracle and jOOQ's emulation of the feature while preserving three-valued logic.

### Source excerpt

Starting with jOOQ 3.17, the Condition type extends the Field<Boolean> type. Because, that's what the SQL standard thinks it is, in sorts: The exact definition contains intermediate rules, but you get the idea. A <predicate> (which is a Condition in jOOQ) can be used wherever a <boolean value expression> can be used, which again can ... Continue reading A Condition is a Field ->

## Google announces Logica, a reusable language for data queries

DevFeed: [Google announces Logica, a reusable language for data queries](<https://devfeed.tech/articles/google-announces-logica-organizing-your-data-queries-making-them-universally-reusable-and-fun-29477.md>)

Original publisher: [Read original article](<http://lambda-the-ultimate.org/google-announces-logica>)

Published: 2021-04-29T14:50:27Z

Content type: article

Language: en

Sources: [Lambda the Ultimate](<https://devfeed.tech/sources/lambda-the-ultimate.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Google](<https://devfeed.tech/topics/google.md>), [data](<https://devfeed.tech/topics/data.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [fun](<https://devfeed.tech/tags/fun.md>), [google](<https://devfeed.tech/tags/google.md>), [logic](<https://devfeed.tech/tags/logic.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [sql](<https://devfeed.tech/tags/sql.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The article discusses Logica, a Datalog-like language developed internally at Google for organizing data queries into small, understandable, reusable pieces of logic. It contrasts Logica's workflow with SQL, which has limited support for packages, imports, and higher-level function composition.

### Source excerpt

You can read more about it at the Google Open Source blog post, Logica: organizing your data queries, making them universally reusable and fun. They advocate for datalog-like language they developed internally at Google. The reason? Good programming is about creating small, understandable, reusable pieces of logic that can be tested, given names, and organized into packages which can later be used to construct more useful pieces of logic. SQL resists this workflow. Although you can encapsulate certain repeated computations into views and functions, the syntax and support for these can vary among implementations, the notions of packages and imports are generally nonexistent, and higher-level constructions (e.g. passing a function to a function) are impossible.

## Boolean not

DevFeed: [Boolean not](<https://devfeed.tech/articles/boolean-not-38642.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_10_31_boolean_not/>)

Published: 2020-10-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [boolean](<https://devfeed.tech/tags/boolean.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [logic](<https://devfeed.tech/tags/logic.md>), [operator](<https://devfeed.tech/tags/operator.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [xor](<https://devfeed.tech/tags/xor.md>)

### AI overview

This Kotlin tutorial explains Boolean negation, focusing on the not() method and the readability of different ways to express negative conditions. It recommends positive function names in general, with negative forms added when they represent common business logic, and explains that not() is an operator function.

### Source excerpt

Introduction Boolean is one of the essential types in programming and probably one of the simplest because it has only two values: true and false. Boolean are usually used as flags for control flow, specifically, conditions. if (string.isEmpty()) { println("String is empty") } It is not much interesting in Boolean, but in Kotlin there is one thing which might be confusing if used - it is method not(). Negate Boolean If we look at declaration of Boolean class in Kotlin we'll see five methods, four of which are pretty obvious: and, or, xor and compareTo. And the fifth is not:

## For mathematicians, = does not mean equality

DevFeed: [For mathematicians, = does not mean equality](<https://devfeed.tech/articles/for-mathematicians-does-not-mean-equality-40421.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2018/04/13/for-mathematicians-does-not-mean-equality/>)

Published: 2018-04-13T08:00:05Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [equals](<https://devfeed.tech/topics/equals.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>)

Tags: [equals](<https://devfeed.tech/tags/equals.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [logic](<https://devfeed.tech/tags/logic.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [operator](<https://devfeed.tech/tags/operator.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This opinion article examines how the equals symbol is used in mathematics and programming. It argues that mathematical equality is often context-dependent, while programming languages give operators such as =, ==, and === distinct documented meanings. Examples include summation notation, set-builder notation, and function definitions.

### Source excerpt

Every now and then I hear some ridiculous things about the equals symbol. Some large subset of programmers--perhaps related to functional programmers, perhaps not--seem to think that = should only and ever mean "equality in the mathematical sense." The argument usually goes, Functional programming gives us back that inalienable right to analyze things by using mathematics. Never again need we bear the burden of that foul mutant x = x+1! No novice programmer--nay, not even a mathematician!

## NP-hard does not mean hard

DevFeed: [NP-hard does not mean hard](<https://devfeed.tech/articles/np-hard-does-not-mean-hard-40418.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2017/12/29/np-hard-does-not-mean-hard/>)

Published: 2017-12-29T13:30:23Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [boolean](<https://devfeed.tech/tags/boolean.md>), [completeness](<https://devfeed.tech/tags/completeness.md>), [complexity-theory](<https://devfeed.tech/tags/complexity-theory.md>), [logic](<https://devfeed.tech/tags/logic.md>), [mario](<https://devfeed.tech/tags/mario.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [np-completeness](<https://devfeed.tech/tags/np-completeness.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [problems](<https://devfeed.tech/tags/problems.md>), [real-world](<https://devfeed.tech/tags/real-world.md>), [regular-languages](<https://devfeed.tech/tags/regular-languages.md>), [solve](<https://devfeed.tech/tags/solve.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

This article explains that NP-hardness is a worst-case mathematical property, not a claim that a problem is always difficult for humans or algorithms. Using Super Mario as an example, it shows how game levels can encode boolean logic and why solving the game in full generality would encompass hard computational problems, while ordinary real-world levels may still be solvable efficiently.

### Source excerpt

When NP-hardness pops up on the internet, say because some silly blogger wants to write about video games, it's often tempting to conclude that the problem being proved NP-hard is actually very hard! "Scientists proved Super Mario is NP-hard? I always knew there was a reason I wasn't very good at it!" Sorry, these two are unrelated. NP-hardness means hard in a narrow sense this post should hopefully make clear. After that, we'll explore what "hard" means in a mathematical sense that you can apply beyond NP-hardness to inform your work as a programmer.

## Boolean Logic in Polynomials

DevFeed: [Boolean Logic in Polynomials](<https://devfeed.tech/articles/boolean-logic-in-polynomials-40414.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2017/07/24/boolean-logic-in-quadratic-polynomials/>)

Published: 2017-07-24T09:00:38Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [polynomials](<https://devfeed.tech/topics/polynomials.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [boolean](<https://devfeed.tech/tags/boolean.md>), [boolean-satisfiability](<https://devfeed.tech/tags/boolean-satisfiability.md>), [logic](<https://devfeed.tech/tags/logic.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [polynomials](<https://devfeed.tech/tags/polynomials.md>)

### AI overview

This tutorial shows how to represent Boolean logic formulas with polynomials by using multiplication for conjunction and 1 minus a variable for negation. It explains how the construction relates Boolean satisfiability to the hardness of multivariable polynomial root-finding and constrained polynomial optimization.

### Source excerpt

Problem: Express a boolean logic formula using polynomials. I.e., if an input variable $ x$ is set to $ 0$, that is interpreted as false, while $ x=1$ is interpreted as true. The output of the polynomial should be 0 or 1 according to whether the formula is true or false as a whole. Solution: You can do this using a single polynomial. Illustrating with an example: the formula is $ \neg[(a \vee b) \wedge (\neg c \vee d)]$ also known as

## Translating English Sentences into Propositional Logic Statements

DevFeed: [Translating English Sentences into Propositional Logic Statements](<https://devfeed.tech/articles/translating-english-sentences-into-propositional-logic-statements-40533.md>)

Original publisher: [Read original article](<http://nbviewer.ipython.org/url/norvig.com/ipython/PropositionalLogic.ipynb>)

Published: 2016-10-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Peter Norvig](<https://devfeed.tech/sources/peter-norvig.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [logic](<https://devfeed.tech/tags/logic.md>), [program](<https://devfeed.tech/tags/program.md>), [regular-expressions](<https://devfeed.tech/tags/regular-expressions.md>), [rules](<https://devfeed.tech/tags/rules.md>), [translation](<https://devfeed.tech/tags/translation.md>)

### AI overview

This tutorial presents a program that translates many informal English sentences into formal propositional-logic statements. It explains an ordered set of translation rules, recursive processing, propositional-symbol definitions, regular expressions, and test cases, while noting that the approach is limited and can produce errors.

### Source excerpt

Automatically converting informal English sentences into formal Propositional Logic.

## Exploring Variations on the Cheryl's Birthday Logic Puzzle

DevFeed: [Exploring Variations on the Cheryl's Birthday Logic Puzzle](<https://devfeed.tech/articles/when-cheryl-met-eve-a-birthday-story-40526.md>)

Original publisher: [Read original article](<http://nbviewer.ipython.org/url/norvig.com/ipython/Cheryl-and-Eve.ipynb>)

Published: 2015-05-13T00:00:00Z

Content type: article

Language: en

Sources: [Peter Norvig](<https://devfeed.tech/sources/peter-norvig.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [exploration](<https://devfeed.tech/tags/exploration.md>), [function](<https://devfeed.tech/tags/function.md>), [logic](<https://devfeed.tech/tags/logic.md>), [puzzle](<https://devfeed.tech/tags/puzzle.md>)

### AI overview

This notebook explores variations of the Cheryl's Birthday logic puzzle by using code to verify generated date lists, randomly construct new puzzles, measure solution outcomes, and introduce a new character named Eve.

### Source excerpt

An extended exploration beyond the popular "Cheryl's Birthday" logic puzzle.

## Cheryl's Birthday (How to Solve It with Code)

DevFeed: [Cheryl's Birthday (How to Solve It with Code)](<https://devfeed.tech/articles/cheryl-s-birthday-how-to-solve-it-with-code-40527.md>)

Original publisher: [Read original article](<http://nbviewer.ipython.org/url/norvig.com/ipython/Cheryl.ipynb>)

Published: 2015-04-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Peter Norvig](<https://devfeed.tech/sources/peter-norvig.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Python](<https://devfeed.tech/topics/python.md>), [Code](<https://devfeed.tech/topics/code.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [computer](<https://devfeed.tech/tags/computer.md>), [functions](<https://devfeed.tech/tags/functions.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [logic](<https://devfeed.tech/tags/logic.md>), [programming](<https://devfeed.tech/tags/programming.md>), [puzzle](<https://devfeed.tech/tags/puzzle.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

A tutorial that solves the Cheryl's Birthday logic puzzle by translating its statements and possible dates into Python code. It explains how computational enumeration can verify the puzzle's conditions and support problem solving.

### Source excerpt

A solution to the popular "Cheryl's Birthday" logic puzzle.

## Zero-One Laws for Random Graphs

DevFeed: [Zero-One Laws for Random Graphs](<https://devfeed.tech/articles/zero-one-laws-for-random-graphs-40376.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2015/02/09/zero-one-laws-for-random-graphs/>)

Published: 2015-02-09T09:00:00Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [big-o-notation](<https://devfeed.tech/tags/big-o-notation.md>), [connectivity](<https://devfeed.tech/tags/connectivity.md>), [countability](<https://devfeed.tech/tags/countability.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [erdos-renyi](<https://devfeed.tech/tags/erdos-renyi.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [logic](<https://devfeed.tech/tags/logic.md>), [logical](<https://devfeed.tech/tags/logical.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [model-theory](<https://devfeed.tech/tags/model-theory.md>), [network-science](<https://devfeed.tech/tags/network-science.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [random-graph](<https://devfeed.tech/tags/random-graph.md>), [random-graphs](<https://devfeed.tech/tags/random-graphs.md>), [statement](<https://devfeed.tech/tags/statement.md>), [vertex](<https://devfeed.tech/tags/vertex.md>)

### AI overview

This article introduces zero-one laws for Erdős-Rényi random graphs. It explains that many graph properties, including properties expressible in first-order logic, have probabilities that tend toward zero or one as the graph grows, with behavior determined by relevant thresholds or constant edge probabilities.

### Source excerpt

Last time we saw a number of properties of graphs, such as connectivity, where the probability that an Erdős-Rényi random graph $ G(n,p)$ satisfies the property is asymptotically either zero or one. And this zero or one depends on whether the parameter $ p$ is above or below a universal threshold (that depends only on $ n$ and the property in question). To remind the reader, the Erdős-Rényi random "graph" $ G(n,p)$ is a distribution over graphs that you draw from by including each edge independently with probability $ p$.

## The Halting Problem

DevFeed: [The Halting Problem](<https://devfeed.tech/articles/the-halting-problem-40751.md>)

Original publisher: [Read original article](<https://radek.io/posts/the-halting-problem/>)

Published: 2014-07-27T00:00:00Z

Content type: article

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [computer-science](<https://devfeed.tech/tags/computer-science.md>), [computers](<https://devfeed.tech/tags/computers.md>), [halting-problem](<https://devfeed.tech/tags/halting-problem.md>), [infinite](<https://devfeed.tech/tags/infinite.md>), [input](<https://devfeed.tech/tags/input.md>), [logic](<https://devfeed.tech/tags/logic.md>), [loops](<https://devfeed.tech/tags/loops.md>), [program](<https://devfeed.tech/tags/program.md>), [reduction](<https://devfeed.tech/tags/reduction.md>)

### AI overview

The article explains Alan Turing's halting problem: no general method can always determine whether an arbitrary program will halt or run forever. It describes the problem's connection to undecidability, diagonalization, and reductions, and briefly discusses Turing's work with Alonzo Church.

### Source excerpt

And other things computers cannot solve

## False Proof: 1 = 2 (with Calculus)

DevFeed: [False Proof: 1 = 2 (with Calculus)](<https://devfeed.tech/articles/false-proof-1-2-with-calculus-40245.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/10/25/false-proof-1-2-with-calculus/>)

Published: 2011-10-25T14:46:12Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [function](<https://devfeed.tech/topics/function.md>), [Variable](<https://devfeed.tech/topics/variable.md>)

Tags: [calculus](<https://devfeed.tech/tags/calculus.md>), [false-proof](<https://devfeed.tech/tags/false-proof.md>), [function](<https://devfeed.tech/tags/function.md>), [logic](<https://devfeed.tech/tags/logic.md>), [variable](<https://devfeed.tech/tags/variable.md>)

### AI overview

This article presents a false calculus proof that 1 equals 2 and explains that the error comes from differentiating a variable-length sum with respect to only one of its variables.

### Source excerpt

Problem: Show 1 = 2 (with calculus) "Solution": Consider the following: $ 1^2 = 1$ $ 2^2 = 2 + 2$ $ 3^2 = 3 + 3 + 3$ $ \vdots$ $ x^2 = x + x + \dots + x$ ($ x$ times) And since this is true for all values of $ x$, we may take the derivative of both sides, and the equality remains true. In other words:

## Theorem Proving in Mathematics

DevFeed: [Theorem Proving in Mathematics](<https://devfeed.tech/articles/theorem-proving-in-mathematics-40755.md>)

Original publisher: [Read original article](<https://radek.io/posts/theorem-proving-in-mathematics/>)

Published: 2011-10-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [math](<https://devfeed.tech/topics/math.md>)

Tags: [induction](<https://devfeed.tech/tags/induction.md>), [logic](<https://devfeed.tech/tags/logic.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [predicate](<https://devfeed.tech/tags/predicate.md>), [reasoning](<https://devfeed.tech/tags/reasoning.md>), [sequence](<https://devfeed.tech/tags/sequence.md>), [statement](<https://devfeed.tech/tags/statement.md>)

### AI overview

This tutorial introduces mathematical proof as deductive reasoning from axioms and previously established theorems. It explains direct proof with a worked equation example and begins discussing proof by mathematical induction and its connection to predicate logic.

### Source excerpt

The most common methods of proving you're explained

## n-Colorability is Equivalent to Finite n-Colorability (A Formal Logic Proof)

DevFeed: [n-Colorability is Equivalent to Finite n-Colorability (A Formal Logic Proof)](<https://devfeed.tech/articles/n-colorability-is-equivalent-to-finite-n-colorability-a-formal-logic-proof-40241.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/09/04/n-colorability-is-equivalent-to-finite-n-colorability/>)

Published: 2011-09-04T22:41:27Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [graph theory](<https://devfeed.tech/topics/graph-theory.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [completeness](<https://devfeed.tech/tags/completeness.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graph-coloring](<https://devfeed.tech/tags/graph-coloring.md>), [graph-theory](<https://devfeed.tech/tags/graph-theory.md>), [logic](<https://devfeed.tech/tags/logic.md>), [vertex](<https://devfeed.tech/tags/vertex.md>)

### AI overview

A formal logic proof shows that an infinite graph is n-colorable exactly when every finite subgraph is n-colorable. The proof encodes valid colorings as propositional formulas and applies the Compactness Theorem.

### Source excerpt

Warning: this proof requires a bit of familiarity with the terminology of propositional logic and graph theory. Problem: Let $ G$ be an infinite graph. Show that $ G$ is $ n$-colorable if and only if every finite subgraph $ G_0 \subset G$ is $ n$-colorable. Solution: One of the many equivalent versions of the Compactness Theorem for the propositional calculus states that if $ \Sigma \subset \textup{Prop}(A)$, where $ A$ is a set of propositional atoms, then $ \Sigma$ is satisfiable if and only if any finite subset of $ \Sigma$ is satisfiable.

## Number of Games in a Tournament

DevFeed: [Number of Games in a Tournament](<https://devfeed.tech/articles/number-of-games-in-a-tournament-40208.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/06/23/number-of-games-in-a-tournament/>)

Published: 2011-06-23T16:04:47Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [logic](<https://devfeed.tech/tags/logic.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [number](<https://devfeed.tech/tags/number.md>)

### AI overview

A tournament with 1,000 players requires 999 games. The article proves the general result that a single-elimination tournament with n players has n−1 games by pairing each game with the player who loses it.

### Source excerpt

Problem: 1000 players compete in a tournament. In each round, players are matched with opponents, and the winner proceeds to the next round. If there are an odd number of players in a round, one player chosen at random sits out of that round. What is the total number of games are played in the tournament? Solution: 999. Each player loses exactly one game, except for the winner of the tournament.

## Simple Rules, Complex Systems and Software Development

DevFeed: [Simple Rules, Complex Systems and Software Development](<https://devfeed.tech/articles/simple-rules-complex-systems-and-software-development-30407.md>)

Original publisher: [Read original article](<https://www.mdubakov.com/posts/simple-rules-complex-systems-software-development/>)

Published: 2009-03-23T15:41:57Z

Content type: opinion

Language: en

Sources: [Blog by Michael Dubakov](<https://devfeed.tech/sources/blog-by-michael-dubakov.md>)

Topics: [Complex Systems](<https://devfeed.tech/topics/complex-systems.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Development](<https://devfeed.tech/topics/development.md>), [Agile](<https://devfeed.tech/topics/agile.md>), [Cellular automaton](<https://devfeed.tech/topics/cellular-automaton.md>), [Simulation](<https://devfeed.tech/topics/simulation.md>)

Tags: [agile](<https://devfeed.tech/tags/agile.md>), [communication](<https://devfeed.tech/tags/communication.md>), [complex-systems](<https://devfeed.tech/tags/complex-systems.md>), [development](<https://devfeed.tech/tags/development.md>), [development-process](<https://devfeed.tech/tags/development-process.md>), [logic](<https://devfeed.tech/tags/logic.md>), [rules](<https://devfeed.tech/tags/rules.md>), [simulation](<https://devfeed.tech/tags/simulation.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

The article argues that simple rules can produce complex behavior, using ant colonies, bird flocks, and Conway's Game of Life as examples. It applies this idea to software development, arguing that simple processes such as Agile and Scrum can support learning, feedback, communication, and cooperation, while excessive process complexity can produce rigid behavior.

### Source excerpt

Many complex systems are based on simple rules. A set of several simple rules leads to complex, intelligent behavior. While a set of complex rules often leads to a dumb and primitive behavior. There are many examples. Ants Colony How ants search for food? They do not have cell phones, cars and mini-markets near the nest. They should have something simpler to communicate. Here is how ants work: Travel randomly in search for food. Take a piece of food and head straight back to the nest. On the way back to the nest lay down an odor trail. Notify nestmates of the discovered food encouraging them to leave the nest. These newly recruited ants will follow the odor trail directly to the food source. In their turn, each ant will reinforce the odor trail until the food is gone. Sounds simple? Take a look at this very nice ants colony model. Drop some food and enjoy the action. Birds Flocks Birds flocks are beautiful. You may think that the movement gets orchestrated by one savvy bird. But this is not the case. A bird glock is guided by three simple principles (every decent bird knows them): Separation: steer to avoid stumbling upon local flockmates. Alignment: steer towards the average heading of local flockmates. Cohesion: steer to move towards the average position of local flockmates. Simple? Yes, it is. Look at the picture on the right. It's just amazing! Game of Life Game of Life was invented in 1970 by John Conway. It is a cellular automaton and simulates the birth, death, etc., of organisms based on certain rules: Each cell with one or no neighbors dies, as if of loneliness. Each cell with four or more neighbors dies, as if of overpopulation. Each cell with two or three neighbors survives. Each empty cell with three neighbors becomes populated. Simple rules. But these rules lead to fantastic diversity of the forms. Different types of the forms have been discovered e.g. still objects, oscillators, gliders, spaceships, etc. It is impossible to predict the state of a syste