Logic Starter File

Download

; A starter file with some simple facts that define addition as
; well as appending two lists.
;
; Used in CS61A, made by: Mark Miyashita

(fact (increment 0 1))
(fact (increment 1 2))
(fact (increment 2 3))
(fact (increment 3 4))
(fact (increment 4 5))
(fact (increment 5 6))
(fact (increment 6 7))
(fact (increment 7 8))
(fact (increment 8 9))
(fact (increment 9 10))
(fact (increment 10 11))
(fact (increment 11 12))
(fact (increment 12 13))

(fact (add 1 ?x ?x+1)
      (increment ?x ?x+1))

(fact (add ?x+1 ?y ?z+1)
      (increment ?x ?x+1)
      (increment ?z ?z+1)
      (add ?x ?y ?z))

(query (add 2 4 6))
; expect Success!

(query (add 1 1 3))
; expect Failed.

(query (add 1 1 ?what))
; expect Success! ; what: 2

(fact (append () ?a ?a))
(fact (append (?x . ?r) ?b (?x . ?c))
      (append ?r ?b ?c))

(query (append (1 2) (3 4) (1 2 3 4)))
; expect Success!

(query (append (1 2) (3 ?what) (1 2 3 5)))
; expect Success! ; what: 5