[go: up one dir, main page]

06 Aug 25

An extensive collection of notes on picat that cover nearly all corners of the language

by eli 6 months ago saved 2 times

25 Aug 24

Twelf is a language used to specify, implement, and prove properties of deductive systems such as programming languages and logics

by eli 1 year ago

21 May 24

It cannot find its own problems; it cannot feed itself. … This, however, is not a defect in a machine; we do not want it to do its own business, but ours.

by eli 1 year ago

28 Nov 23

This is a tool to perform proofs in various logics (e.g. propositional, predicate logic) visually

by eli 2 years ago

24 Aug 23

06 Aug 23

So from day one, they warned us Turing machines are clumsy beasts where easy tasks are hard to accomplish, and generally hang unpredictably.

by eli 2 years ago

01 Aug 23

In terms of implementation, though, it is far from simple. Lambda calculus has variables, which introduce huge complexity into the interpreter: especially if you want to do any kind of formal reasoning about programs, this complexity is a problem. We might want to reach for something even lower-level than lambda calculus: this is where combinator calculi come in.

by eli 2 years ago

28 Jul 23

This is a top-down introduction to core.logic which attempts to lead you to that elusive AHA! moment of understanding what logic programming is about.

by eli 2 years ago

Core miniKanren extends Scheme with three operations: ==, fresh, and conde. There is also run, which serves as an interface between Scheme and miniKanren, and whose value is a list.

by eli 2 years ago saved 2 times

28 May 23

A useful table of all the combinators and their effects.

by eli 2 years ago

18 May 23

miniKanren is a family of Domain Specific Languages for logic programming.The name kanren comes from a Japanese word (関連) meaning “relation”.The core miniKanren language is very simple, with only three logical operators and one interface operator.The core language, using Scheme as the host language, is described in this short, interactive tutorial.

by eli 2 years ago saved 2 times

14 May 23

When a condition is found to be TRUE, the engine executes the THEN clause, which results in new information being added to its dataset. In other words, the engine starts with a number of facts and applies rules to derive all possible conclusions from those facts. This is where the name “forward chaining” comes from – the fact that the inference engine starts with the data and reasons its way forward to the answer, as opposed to backward chaining, which works the other way around.How about backward chaining?In backward chaining, the system works from conclusions backwards towards the facts, an approach called goal driven. Compared to forward chaining, few data are asked, but many rules are searched. Backward-chaining rules engines are not suited for dynamic situations and are mostly only used as expert systems in decision making

by eli 2 years ago

12 May 23

The topic of type theory is fundamental both in logic and computer science. We limit ourselves here to sketch some aspects that are important in logic. For the importance of types in computer science, we refer the reader for instance to Reynolds 1983 and 1985.

by eli 2 years ago

The functional style of programming is founded on simple, everyday mathematical intuition: If a procedure or method has no side effects, then (ignoring efficiency) all we need to understand about it is how it maps inputs to outputs – that is, we can think of it as just a concrete method for computing a mathematical function. This is one sense of the word “functional” in “functional programming.” The direct connection between programs and simple mathematical objects supports both formal correctness proofs and sound informal reasoning about program behavior.

by eli 2 years ago

26 Dec 22

Girard’s linear logic can be used to model programming languages in which each bound variable name has exactly one “occurrence”–i.e., no variable can have implicit “fan-out”; multiple uses require explicit duplication. Among other nice properties, “linear” languages need no garbage collector, yet have no dangling reference problems. We show a natural equivalence between a “linear” programming language and a stack machine in which the top items can undergo arbitrary permutations. Such permutation stack machines can be considered combinator abstractions of Moore’s Forth programming language.

by eli 3 years ago