# Courses using Prolog

Comp Sci at CSUSB: [ ../../cs320/ ] [ ../../cs620/ ] [ ../../cs556/ ] [ ../../cs656/ ]

# CS320 Laboratories

[ lab1.html ] [ lab2.html ] [ lab3.html ]

# Resources

Informal Introduction: [ ../../samples/prolog.summary.html ] [ intro.prolog.html ]

Archived Mail about Prolog [ mbox ] [ prolog.mbox ] [ strings.mbox ]

# Examples

Prolog Sites on the World Wide Web: [ ../../samples/prolog.www.sites.html ]

Finding the absolute value of a number in two different ways: [ abs.plg ]

An Old-fashioned Science Fiction Story Generator [ story.plg ]

The paradox of who shaves the barber: [ barber.plg ]

Binary Search algorithm: [ binary.plg ]

A way to search all pairs of numbers etc. How Cantor enumerated all the fractions: [ cantor.plg ]

Simulated parallel computations: [ cobegin.plg ]

The Problem of the Coffeecan: [ coffeecan.plg ]

Chemical Knowledge Base... with errors to be corrected: [ chem.plg ]

An incorrect model of the Computer Science Department: [ compsci.plg ]

Generating Ice Cream Cones: [ cones.plg ]

Counting Icecream cones [ coney.plg ]

Solving a Cryptarithm Problem [ crptarth.plg ]

Calculating factorials: [ factorial.plg ] [ factorl2.plg ]

The Hailsone or Collatz Sequence [ collatz.plg ]

Family values? [ pg84.plg ] [ family2.plg ] [ family.plg ] [ wirth.plg ] [ wirth2.plg ]

Doing Functions the Logical Way: [ functions.plg ] [ experiment.plg ]

Trying to pick Lotto numbers at random: [ lotto.plg ] [ lotto93.plg ]

Finding Magic Squares: [ magic.plg ] [ magic2.plg ] [ magic3.plg ] [ magic4.plg ]

Murder at the Metropolitan Club: [ metro1.plg ] [ metro2.plg ]

A Simpler 16><16 Suduko puzzle solve [ sudoku4.plg ]

Harry Potter and the Puzzle of the Potions [ Potions.htm ] [ potion1.plg ]

Calendar Info in Prolog [ months.plg ] [ year.plg ] [ calendar.plg ]

Example from Sebesta [ pg84.plg ]

Generating a rather bad Poem [ poem.plg ]

Attempt (failed) to Pretty-print Prolog Programs [ pp.plg ]

Quicksort in Prolog [ qsort.plg ] [ qsort2.plg ]

Simulating Random Access Memory [ ram.plg ] [ ram.old.plg ]

Rational Arithmetic - Fractions in Prolog [ rational.plg ]

Computing Risks: [ risk.plg ]

Samples of Logic Problems: [ sample1.plg ] [ sample2.plg ] [ sample3.plg ]

Generating Sets from predicates: [ setof.plg ]

Sum of squares... and other stats. [ ss.plg ] [ sum_squares.plg ] [ summer1.plg ]

Picking the best deal in insurance [ minimum.plg ] (using assert and retract) [ minimum2.plg ] (using bagof and min_list)

T Van Le's Techniques [ t.van_le.plg ]

An idea for a Software Engineering Tool: [ tool.plg ]

Prolog doe the Graduate Record Exam: [ GRE10.plg ] [ GRE8.plg ]

List handling in Prolog [ append.plg ] [ merge.plg ] [ memberp.plg ] [ lists.plg ] [ lists2.plg ] [ unique.plg ]

Defining an operator [ le.plg ]

Simulating English sentences in Prolog [ english.plg ]

For-loops in Prolog???? [ for.plg ] [ for.complex.plg ] [ for.example.plg ]

Simplified Changes to data base: delta(Old, New, WhereWhatever) [ delta.plg ]

Context Free Grammars in Prolog: [ grammar.plg ]

A silly example... [ happy.plg ] [ happy2.plg ] [ happy3.plg ]

Integers: [ int.plg ]

A Joke (of sorts) [ joke.plg ]

Logic in Prolog [ logic.plg ] [ truthtable.plg ] [ bool.plg ] [ liars.plg ] [ KNS.plg ] [ KNS2.plg ]

Maximization in Prolog [ maxi.plg ]

Recording positions and movements in Prolog [ movement.plg ]

Mult? [ mult.plg ]

Odd things: [ odd.plg ] [ odd2.plg ] [ oddity.plg ]

Peano's Model of the Numbers [ peano.plg ]

Prime numbers in Prolog [ primes.plg ] [ primes2.plg ] [ sieve.plg ]

Random Numbers [ nurandom.plg ] [ random.plg ]

The Shortest Path Problem [ shortest_path.plg ]

Paths thru a Maze [ maze.plg ]

ADTS [ sets.plg ] [ stack.plg ]

Preorders? [ tree.plg ]

Parsing type descriptions: [ types.plg ]

BRMC? [ brmc.plg ]

A solution to the four color problem: [ color_map.plg ]

The Monkey, the Banana, etc [ monkey.plg ]

The doctor/eliza program (does not work!) [ eliza.plg ]

Post correspondence systems: [ emil.post.plg ]

The Minesweeper Game [ mine.plg ] [ mine2.plg ]

The Mutilated Chess Board Problem [ chess.plg ]

# Techniques

If_then_else: use backtracking: [ abs.plg ]

Loops - use recursion: To Be announced

Loops - use repeat/fail/etc [ cones.plg ] [ coney.plg ] [ factorl2.plg ] [ for.complex.plg ] [ for.plg ] [ setof.plg ] [ sum_squares.plg ] [ mine.plg ] [ mine2.plg ]

Generating all permutations by using select [ perm.plg ]

Generate and Test Pattern [ bool.plg ] [ coney.plg ] [ mine.plg ] [ sample1.plg ] [ sample2.plg ] [ sample3.plg ] [ liars.plg ] [ KNS.plg ] [ KNS2.plg ] [ magic.plg ] [ magic2.plg ] [ magic3.plg ] [ magic4.plg ] [ Potions.htm ] [ potion1.plg ] [ potion0.plg ] [ potions.plg ]

Assert & Retract: [ delta.plg ] [ maze.plg ] [ maxi.plg ] [ coney.plg ] [ ram.plg ] [ ram.old.plg ] [ lotto93.plg ] [ movement.plg ] [ mine.plg ] [ minimum.plg ]

Randomness: [ lotto93.plg ] [ story.plg ]

The Cut(!) operator: [ back.plg ]

Operators: [ english.plg ] [ le.plg ]

The setof predicate: [ setof.plg ]

Sample of use of bagof: [ minimum2.plg ] (using bagof and min_list)