Latest Tech News

Stay updated with the latest in technology, AI, cybersecurity, and more

Filtered by: proof Clear Filter

Verified dynamic programming with Σ-types in Lean

1. Introduction If you’ve taken an algorithms class, you have likely seen dynamic programming, specifically a technique called memoization. Memoization works to optimize recursive algorithms by caching the solutions to subproblems in a table, and when a subproblem is encountered, it queries the table instead of recomputing the solution. This gives us an exponential performance boost. This blog post will show how to solve a dynamic programming problem using memoization in Lean, and verify its c

Verified Dynamic Programming with Σ-types in Lean

1. Introduction If you’ve taken an algorithms class, you have likely seen dynamic programming, specifically a technique called memoization. Memoization works to optimize recursive algorithms by caching the solutions to subproblems in a table, and when a subproblem is encountered, it queries the table instead of recomputing the solution. This gives us an exponential performance boost. This blog post will show how to solve a dynamic programming problem using memoization in Lean, and verify its c

Proofs Without Words

The following demonstrate proofs of various identities and theorems using pictures, inspired from this gallery. Nichomauss' Theorem: the sum of the first cubes can be written as the square of the sum of the first integers, a statement that can be written as . Here, we use the same re-arrangement as the first proof on this page (the sum of first odd integers is a square). Here's another re-arrangement to see this: This also suggests the following alternative proof:

Writing a Truth Oracle in Lisp

This post assumes some familiarity with typed functional programming, Lisp, and formal logic. Today we will attempt to write a truth oracle in Lisp. By "truth oracle," I mean a program that can determine whether arbitrary mathematical statements are true or false. This might sound impossible, due to first-order logic being undecidable, but let's try anyway. Before that, though, we need to go over some required concepts. Extracting information from proofs First, sometimes, we can extract info

Peano arithmetic is enough, because Peano arithmetic encodes computation

$\begingroup$ PA is enough, because PA can encode computation. This is longer than I expected, and was made longer still by some browser crashes. But I'd been idly thinking of writing these ideas up. I hadn't for these reasons. It is a lot of work. What I have to say is obvious to logicians, and they would consider the detour into programming to only be a distraction. Computer programmers who can appreciate the programming detour, are mostly not that interested in logic. But this question hi

Password-spraying attacks target 80,000 Microsoft Entra ID accounts

Hackers have been using the TeamFiltration pentesting framework to target more than 80,000 Microsoft Entra ID accounts at hundreds of organizations worldwide. The campaign started last December and has successfully hijacked multiple accounts, say researchers at cybersecurity company Proofpoint, who attribute the activity to a threat actor called UNK_SneakyStrike. According to the researchers, the peak of the campaign happened on January 8, when it targeted 16,500 accounts in a single day. Such